有关向元组push元素的问题
来源:2-4 数组和元组

Hongjia
2023-11-21
let user: [string, number] = ["viking", 20];
user = ["molly", 20, 123]; // Error
user.push(123); // OK
直接赋值不被允许,但允许通过push
方法添加新的元素,这算不算破坏了类型检查?在实际开发中是否应该避免元组push
的行为?
写回答
1回答
-
同学你好
元组的类型声明只对数组的固定部分进行了类型检查,而对于超过固定长度的部分,TypeScript 不会进行额外的检查。这就是为什么你在后面可以调用
push
添加一个额外的元素而不会得到编译错误的原因。这种宽容性是因为 TypeScript 的元组类型并没有强制规定数组的确切长度。我认为这个是看个人对于类型的理解和容忍度,假如你是一个完美的类型系统支持者,那么就应该避免 push,因为会在后面出现一些不可知的错误。
012023-11-21
相似问题