Typescript允许添加以前使用的任何类型的额外元素,但我想限制长度。我已经尝试过& { length: 2 }
,but it didn't helped:
declare var a: [string, number] & { length: 2 };
a[0] = "1"
a[1] = 2;
a[2] = "3";
a[3] = 4;
[2]
和[3]
的分配不会产生错误。如何指定对应的类型?
答案 0 :(得分:7)
使用类型never
for array tail:
declare var a: [string, number, ...never[]];
你会得到
类型'“ 3”'不能分配给'从不'。
类型'4'不能分配给类型'从不'。
答案 1 :(得分:0)
如果您使用的是Typescript 3.1或更高版本,则无需对元组添加特殊限制:
declare var a: [string, number];
您可能会注意到该代码
declare var a: [string, number];
a[0] = "1"
a[1] = 2;
a[2] = "3";
a[3] = 4;
compiles in 3.0.1,但doesn't compile in 3.1.6包含消息
索引“ 2”超出了长度为2的元组的范围。
索引“ 3”超出了长度为2的元组的范围。