Как я могу создать универсальный тип для динамически сгенерированного объекта, созданного из массива - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь сгенерировать определение типа для функции, которая генерирует объект из массива реквизита, но у меня проблемы с этим.

Проблема в том, что в { [K in T]: boolean } я не могу перебрать тип T.

Вот что я пытаюсь сделать:

const createObject = <T extends string[]>(props: T): { [K in T]: boolean } => {
  return props.reduce((acc: any, prop: string) => {
    acc[prop] = true
    return acc
  }, {})
}

Спасибо

1 Ответ

3 голосов
/ 11 июня 2019

просто немного обойти ... вот вам

const createObject = <T extends string>(props: T[]): {[K in T]: boolean} => {
  return props.reduce((acc: any, prop: string) => {
    acc[prop] = true;
    return acc;
  }, {});
};

const testObj = createObject(['one', 'two']);
const one = testObj.one;
const two = testObj.two;
const three = testObj.three; // ERROR
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...