TypeScript Array(数组)
数组是存放一组相同类型元素的容器。TypeScript 的数组在声明时必须(或由 TS 自动推断)确定元素类型,从而在编译阶段就拦截掉类型错误。
声明数组
数组类型有两种写法:类型[] 与泛型 Array<类型>:
let nums: number[] = [1, 2, 3]; // 推荐写法
let names: Array<string> = ["张三", "李四"]; // 泛型写法
let mixed: (string | number)[] = ["a", 1]; // 联合类型数组
let empty: number[] = []; // 空数组
访问元素与遍历
下标从 0 开始;可以用 for、for...of 或 forEach 遍历:
let scores: number[] = [90, 85, 78];
console.log(scores[0]); // 输出:90
console.log(scores.length); // 输出:3
for (let i = 0; i < scores.length; i++) {
console.log(scores[i]); // 逐行输出 90、85、78
}
scores.forEach((s) => console.log("分数:" + s));
for (let s of scores) {
console.log(s); // for...of 直接取元素
}
增删元素
push / pop 在尾部增删,unshift / shift 在头部增删:
let arr: number[] = [1, 2, 3];
arr.push(4); // [1, 2, 3, 4]
console.log(arr.pop()); // 输出:4,并删除尾部元素
arr.unshift(0); // [0, 1, 2, 3]
console.log(arr.shift()); // 输出:0,并删除头部元素
console.log(arr); // 输出:[ 1, 2, 3 ]
查找元素
indexOf 返回下标,includes 判断是否存在,find 返回第一个符合条件的元素:
let colors: string[] = ["red", "green", "blue"];
console.log(colors.indexOf("green")); // 输出:1
console.log(colors.includes("red")); // 输出:true
let long = colors.find((c) => c.length > 3); // 找到 "green"
console.log(long); // 输出:green
map / filter / reduce
这三个方法不修改原数组,而是返回新数组或新值,适合做数据变换:
let nums: number[] = [1, 2, 3, 4];
let doubled: number[] = nums.map((n) => n * 2); // [2, 4, 6, 8]
let evens: number[] = nums.filter((n) => n % 2 === 0); // [2, 4]
let total: number = nums.reduce((sum, n) => sum + n, 0); // 10
console.log(doubled); // 输出:[ 2, 4, 6, 8 ]
console.log(evens); // 输出:[ 2, 4 ]
console.log(total); // 输出:10
小结
数组是 TypeScript 最常用的数据结构:声明时明确元素类型,熟练运用增删、遍历以及 map / filter / reduce 等方法,代码会更简洁、更安全。