fomenkogregory
@fomenkogregory
Юниор софтварный инженер

Как развернуть юнион в интерфейс?

Интерфейс в юнион превратить можно через [K in keyof T], а как перебрать какждого мембера юниона?
Ожидаемое поведение
type union = 'a' | 'b' | 'c'
interface I {
  [здесь пройтись циклом по каждому мемберу из union]: any
}
// result:
interface I {
a: any
b: any
c: any
}
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега TypeScript
Crazy on performance...
type Union = 'a' | 'b' | 'c';
type Obj = {
  [K in Union]: any;
};
Интерфейсом насколько помню так нельзя
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
search
@search
мама говорит что я особенный
Вы, наверное это имели ввиду:

type union = 'a' | 'b' | 'c'
type I = {
  someOtherField?: number;
} & Record<union, any>;
// result:
interface I {
  someOtherField?: number;
  a: any
  b: any
  c: any
}


Если вам не нужны дополнительные поля в интерфейсе (типа someOtherField из примера), то можно обойтись просто Record<union, string>. Как-то так:

type I = Record<union, any>;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы