typescript元组的问题

let person: [number, string] = [1, '123']

person.push(1)  
person[3] = '123'  // 报错
console.log(person)

Python将不能修改的值称为不可变的,而不可变的列表被称为元组

typeScript是否也可以这样理解?但是为什么又可以push进去新的元素

阅读 2.1k
1 个回答

TypeScript 在类型控制的时候会受限于 JavaScript 的灵活性,所以一般并不是判断类型精确相等,而是判断类型兼容。

JavaScript 没有元组类型,但在提供了解构语法之后,数组常常被当作元组类型来使用。所以 TypeScript 提供元组类型,但元组类型实际只是固定了长度和每个元素类型的数组,可以使用数组的方法。但由于类型限制了长度和具体的元素类型,所以部分功能又受到限制。

摘自官方文档

A tuple type is another sort of Array type that knows exactly how many elements it contains, and exactly which types it contains at specific positions.

Tuple 类型是数组的另一种形式,它明确了数组所包含的元素长度,以及每个元素确切的类型。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进