尾随逗号禁用类型检查?

时间:2013-04-07 11:20:09

标签: typescript

以下TypeScript代码会产生运行时错误:

var ns: number[] = ['1',];
alert('' + ns[0].toFixed());

我知道分配很好,因为数组文字的类型为any[]。但为什么它首先是any[]

这种尾随逗号行为是否在语言规范中描述?

1 个答案:

答案 0 :(得分:1)

数组文字可以包含未定义的项目,例如:

var a = [,"1",,"3",,,"6"];

由于这会创建一个类型为stringundefined的数组,因此TypeScript中的类型将any来处理它们。

在数组中使用单个尾随逗号实际上不会在末尾创建未定义的值,这是使用Javascript的怪癖之一。因此,在您的情况下,实际数组中只包含单个字符串,TypeScript可以使用类型string[]作为数组,但我想TypeScript不会处理这个特殊的怪癖。