在 TypeScript 中,可以通过 type[] 或 Array<type> 的方式严格指定数组的元素类型。例如:
let arr: number[] = [1, 2, 3];
元组是具有固定长度和每个元素类型的数组:
let tuple: [string, number] = ["age", 30];
注意事项:
push 不被禁止,但结果将突破保证的类型范围。在 TypeScript 中,元组可以包含可变数量的元素吗,它将如何影响类型?
回答: 是的,元组可以通过 ... 语法包含剩余元素,但仍要求剩余元素的严格类型:
let tuple: [string, ...number[]] = ["id", 10, 20, 30];
然而,在 ... 之前的元素必须指定,剩余数组的类型必须是统一的。
故事
在电子商务项目中,开发人员试图通过 push 将超过两个元素保存在元组 [string, number] 中。这在编译阶段没有报错,但导致期望正好两个元素的函数出现了故障,这导致在解析订单时出现错误。
故事
一个函数返回一个元组 [string, number],然而消费者期待的是字符串数组。类型不匹配导致了难以追踪的错误,因此不正确的值进入了生产环境。
故事
在将代码从 JavaScript 迁移到 TypeScript 时,使用了数组而不是元组来返回多个不同类型的值。这破坏了严格的类型,并导致后续代码中出现了依赖于值的顺序和类型的错误。