Get the type of numeric object properties as strings in typescript?

Viewed 46

Having an object similar to this:

const obj = {
   1: "one",
   2: "two",
   3: "three",
}

type Keys = keyof typeof obj; // type of Key is 1 | 2 | 3

How do I get Keys to be of type (strings) "1" | "2" | "3" in order to have autocomplete?

1 Answers

Since TypeScript 4.1, it is possible to use Template Literal Types.

const obj = {
   1: "one",
   2: "two",
   3: "three",
}

type Keys = `${keyof typeof obj}`;
const value: Keys = "1";
Related