Допустим, у меня есть два перечисления Side
и SideDecider
, а в последнем у меня есть ключ side
, который должен иметь значение Side
, чтобы при использовании SideDecider.side
я знал, что этозначение Side
.
enum Side {
left,
right,
}
enum SideDecider {
random,
other,
side, // = Side.left | Side.right is what I would like to use
}
// I am looking for a solution resolving something like the following to true
console.log(Side.left === SideDecider.side || Side.right === SideDecider.side)
// error: This condition will always return 'false' since the types 'Side.left' and 'SideDecider.side' have no overlap.
Как бы я правильно дал такое использование.Я пытаюсь неправильно использовать enums
?Заранее благодарю за помощь.
Проверьте пример на TypeScript Playground
РЕДАКТИРОВАТЬ
Что я на самом делепопытка достичь - то же самое, но с использованием enums
в качестве строк, поэтому я могу использовать их в качестве ключей для объектов, см. мой второй пример . Здесь , кто-то рекомендует использовать класс для строковых перечислений.Это лучшая практика?
enum Side {
left = 'left',
right = 'right',
}
enum SideDecider {
random = 'random',
other = 'other',
side = Side.left | Side.right // Error: Computed values are not permitted in an enum with string valued members
}
const testObj = {
left: 'something',
right: 'something',
}
// (1) I am looking for a solution resolving something like the following to [true, true]
console.log([Side.left && SideDecider.side, Side.right && SideDecider.side])
// (2) Is there a way to use SideDecider.side to access keys in testObj?
console.log(testObj[SideDedicer.side])