Как создать тип в typescript
Есть такой массив объектов
const arr = [
{ id: "0", name: "one" },
{ id: "1", name: "two" },
{ id: "2", name: "three" }
];
Мне нужно получить такой тип:
type Arr = {id: "0" | "1" | "2", name: "one" | "two" | "three"}[]
То есть каждому ключу присвоить все возможные значения, которые встречаются у этого ключа. Проблема в том как это сделать не в ручную ? Пробовал так:
type Arr = typeof arr;
Но это просто создает тип и помечает что значения ключей просто string, но мне нужно вместо этого перечислить все возможные значения, как это сделать ?
Ответы (1 шт):
Автор решения: Alexey Ten
→ Ссылка
Можно так:
const arr = [
{ id: "0", name: "one" },
{ id: "1", name: "two" },
{ id: "2", name: "three" }
] as const;
type Arr = typeof arr extends ReadonlyArray<{id: infer X, name: infer Y }> ? { id: X, name: Y }[] : never;