在类型签名中指定数组的长度

时间:2015-10-05 12:10:41

标签: typescript

如何在TypeScript中的类型签名中指定数组的长度?

var a: Array<any>[20];
...
foo(a[10]); // fine
foo(a[100]); // type error: index is out of bounds

2 个答案:

答案 0 :(得分:3)

你不能,因为数组不是固定的长度。对数组进行过度索引不会导致编译时错误。

这是因为JavaScript中的数组实际上只是特殊对象,具有更严格的属性名称和额外的length属性。 TypeScript只改变数组的一个方面:它们只能包含一种类型的元素。

答案 1 :(得分:0)

如今,至少对于小型阵列而言,tuple类型是可行的替代选择:

declare const t: [boolean, number];
...
t[1] = 5; // fine
t[100] = foo; // error 2493: Tuple type '[boolean, number]' of length '2' has no element at index '100'