数组与元组
数组两种写法:number[](推荐)与 Array<number>(泛型写法,两者等价)。元组(tuple)是"固定长度、每项类型可不同"的数组,适合坐标、键值对这类结构确定的小场景。
注意元组在运行时仍是普通数组:越界访问不会被拦截,push 一个不合类型的元素编译期也会报错(除非用 any 污染)。结构稍复杂就应该换接口或类型别名。
- number[] 等价 Array
,前者更简洁 - 元组 [number, string]:第 0 项数字、第 1 项字符串,位置即类型
- 只读数组:readonly number[] 或 ReadonlyArray
,禁止增删
let nums: number[] = [1, 2, 3]; // 数字数组 let names: Array<string> = ['a', 'b']; // 泛型写法,等价 // 元组:位置对应类型 let point: [number, number] = [10, 20]; let entry: [string, number] = ['age', 18]; // entry = ['age', '18']; // ❌ 第二项必须是 number // entry[2] = 0; // ❌ 长度 2,没有第 3 项 // 只读数组:编译期禁止修改 const ro: readonly number[] = [1, 2, 3]; // ro.push(4); // ❌ readonly 上不存在 push
// 编译后没有任何元组痕迹:就是数组 let nums = [1, 2, 3]; let names = ['a', 'b']; let point = [10, 20]; let entry = ['age', 18]; const ro = [1, 2, 3]; console.log(nums, names, point, entry); console.log('元组运行时就是数组:', Array.isArray(entry)); // true




