【发布时间】:2020-12-30 05:35:07
【问题描述】:
我希望 dirVectors[Turn.Straight] 在编译时失败。
enum Direction {
Up,
Down,
Right,
Left,
}
enum Turn {
Clockwise,
Counterclockwise,
Straight,
}
const dirVectors = {
[Direction.Up]: [0, 1],
[Direction.Down]: [0, -1],
[Direction.Right]: [1, 0],
[Direction.Left]: [-1, 0]
} as Record<Direction, [number, number]>;
我假设dirVectors[Turn.Straight] 可以的原因是因为它们都是数字,Straight = 2 是Direction {0,...,3} 的子集。当我为每个枚举的值分配一个唯一的字符串时,它确实在编译时失败。但是,是否有可能在不走字符串路由的情况下得到编译时错误?
【问题讨论】:
-
如果两个枚举条目具有相同的值,它们可以互换使用来索引
Record。如果不为每个枚举条目分配一个全局唯一值,我认为无论如何都无法改变它。
标签: typescript