Я хочу создать интерфейс с общими ключами, ограниченными, скажем, 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'
. Есть ли способ заставить это работать?