У меня есть две похожие группы определений машинописи:
enum Operation1 {
eof = 'eof',
bof = 'bof'
}
type OperationConfig1 = { [key in Operation1]: TestBedConfig };
enum Operation2 {
append = 'append',
prepend = 'prepend'
}
type OperationConfig2 = { [key in Operation2]: TestBedConfig };
Я могу использовать их следующим образом:
const config1: OperationConfig1 = {
[Operation1.eof]: { ... },
[Operation1.bof]: { ... }
};
const config2: OperationConfig2 = {
[Operation2.append]: { ... },
[Operation2.prepend]: { ... }
};
Я хочу заменить OperationConfig1
и OperationConfig2
одним generi c type OperationConfig
принимает Operation
в качестве параметра в некоторой форме, такой как
type OperationConfigGeneric<T> = { [key in T]: TestBedConfig };
const config1: OperationConfigGeneric<Operation1> = { ... };
const config2: OperationConfigGeneric<Operation2> = { ... };
Приведенный выше код недействителен и выдает следующее исключение:
TS2322: Type 'T' нельзя назначить типу 'string | номер |
символ '. Тип 'T' нельзя назначить типу 'symbol'.
Вопрос. Как параметризовать тип сопоставленного объекта (OperationConfigGeneri c)? Или есть какая-нибудь удобная альтернатива?