Javascript 为什么undefined不能用作索引类型?

Javascript 为什么undefined不能用作索引类型?,javascript,typescript,undefined,Javascript,Typescript,Undefined,我的问题不是关于这个词的意思 类型“undefined”不能用作索引类型 键入脚本错误,如和-我知道在执行someObject[somevaluethatthaveundefined]时会发生这种情况 相反,我想知道为什么TypeScript会阻止这一点,因为undefined可以用于索引对象: constfoo={} foo[未定义]=10 foo[未定义]//10 我最好的猜测是,使用未定义的作为键是个坏主意,因为未定义的和未定义的不一样,但是 foo[未定义] foo[“未定义”] fo

我的问题不是关于这个词的意思

类型“undefined”不能用作索引类型

键入脚本错误,如和-我知道在执行
someObject[somevaluethatthaveundefined]
时会发生这种情况

相反,我想知道为什么TypeScript会阻止这一点,因为
undefined
可以用于索引对象:

constfoo={}
foo[未定义]=10
foo[未定义]//10
我最好的猜测是,使用
未定义的
作为键是个坏主意,因为
未定义的
未定义的
不一样,但是

foo[未定义]
foo[“未定义”]
foo.undefined

指向相同的属性。但我对这个答案并不完全满意,因为TypeScript应该防止代码中断,而不是坏代码。

如果你真的想用TypeScript实现这一点,那么就使用
foo['undefined']
。正如您自己指出的,这与
foo[undefined]
相同。它们指向相同的属性,因为既不是字符串也不是符号的键会转换为字符串。这是JavaScript中的一个事实,TypeScript希望您显式,因为意外地使用这样的值进行索引是bug的来源。如果您确实希望有一个键是
未定义的
值,则必须有一个
映射