Значение общего ключа для интерфейса в Typescript - PullRequest
0 голосов
/ 14 мая 2019

Я хочу создать интерфейс с общими ключами, ограниченными, скажем, enum, гарантируя, что интерфейс принимает только определенные ключи и значения.

Я представляю себе что-то вроде этого

interface IFruit<TargetKey extends string, TargetValue> {
  [key: TargetKey]: TargetValue;
}

Где интерфейс может быть определен с использованием следующего:

enum Keys {
  APPLES = 'APPLES',
  ORANGES = 'ORANGES',
}

enum Values {
  GREEN = 'GREEN',
  BLUE = 'BLUE',
  ORANGE = 'ORANGE',
}

const test: IFruit<Keys, Values> = {
  Keys.APPLES: Values.GREEN,
  'POTATOES': 'BLUE', // Should give an error, as key is not in Keys enum
}

Я не уверен, возможно ли это даже достичь. Пока я получаю ошибку подписи индекса An index signature parameter type must be 'string' or 'number'. Есть ли способ заставить это работать?

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