Присвоить типы аргументу функции отображения generi c в Typescript - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть функция, которая отображает массив. Это выглядит так:

// opt is either `statusA` | `statusB`
options.map((opt: keyof StatusType) => {
        const activeStatus = statusCollection[opt]; //typescript doesnt scream `of any type` error
        ...

где StatusType выглядит следующим образом:

type Keyys = 'statusA' | 'statusB';

export type StatusType = {
  [key in Keyys]: boolean;
};

Я сделал это, потому что хочу иметь возможность получить вычисленное свойство из объекта, чтобы сохранить его в ' Переменная activeStatus 'выше.

Это будет работать нормально, если параметры всегда имеют тип statusType, однако, поскольку это общая функция c, я хочу иметь возможность передавать в другие коллекции. Как бы я определил type вместо «StatusType», чтобы он был более обобщенным c и правильно использовал функцию keyof.

1 Ответ

0 голосов
/ 30 апреля 2020

Я был на правильном пути. Все, что я сделал, это создал тип для хранения определений различных типов, используя OR |. И передавая это как keyof типа string.

type TypeContainer = StatusTypeA | StatusTypeB;

options.map((opt: keyof sype) => {
        const activeStatus = statusCollection[opt as keyof TypeContainer];

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...