以下TypeScript代码会产生运行时错误:
var ns: number[] = ['1',];
alert('' + ns[0].toFixed());
我知道分配很好,因为数组文字的类型为any[]
。但为什么它首先是any[]
?
这种尾随逗号行为是否在语言规范中描述?
答案 0 :(得分:1)
数组文字可以包含未定义的项目,例如:
var a = [,"1",,"3",,,"6"];
由于这会创建一个类型为string
和undefined
的数组,因此TypeScript中的类型将any
来处理它们。
在数组中使用单个尾随逗号实际上不会在末尾创建未定义的值,这是使用Javascript的怪癖之一。因此,在您的情况下,实际数组中只包含单个字符串,TypeScript可以使用类型string[]
作为数组,但我想TypeScript不会处理这个特殊的怪癖。