Zabezpečte, aby objekt mal každú hodnotu výčtu ako kľúč (Typescript)?
Chcem, aby TypeScript vyhodil chybu, keď objekt nemá každý enum hodnotu ako kľúč. Je to možné?
type EnumMap<T> = { ??? }
enum Colors {
Red = 'Red',
Blue = 'Blue'
}
const obj1: EnumMap<Colors> = {
[Colors.Red]: 'roses',
[Colors.Blue]: 'violets'
} // works fine
const obj2: EnumMap<Colors> = {
[Colors.Red]: 'roses'
} // should throw error since Colors.Blue is not among obj2 keys
Odpoveď č. 1
Môžete použiť pomocný typ Record (viac o ňom si môžete prečítať tu) takto
type EnumMap<T extends string> = Record<T, string>
čo je ekvivalentom
type EnumMap<T extends string> = { [key in T]: string}
