0

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

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

我知道分配很好,因为数组文字被键入any[]。但为什么any[]首先呢?

语言规范中的任何地方都描述了这种尾随逗号行为吗?

4

1 回答 1

1

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

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

string由于这会创建一个具有和类型值的数组undefined,因此 TypeScript 中的类型将同时any处理这两者。

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

于 2013-04-07T11:35:31.383 回答