TypeScript 数组
数组(Array)是一种特殊类型的对象,用于存储值的有序集合。在 TypeScript 中,你可以定义包含特定类型元素的数组,从而获得类型安全的好处。
创建数组
有两种主要的方式来声明一个数组:
类型 + 方括号
[]: 这是最常用的方式。typescriptlet numbers: number[] = [10, 20, 30, 40]; let fruits: string[] = ["Apple", "Orange", "Banana"];泛型数组类型
Array<Type>: 使用泛型语法。typescriptlet numbers: Array<number> = [10, 20, 30, 40]; let fruits: Array<string> = ["Apple", "Orange", "Banana"];
两种方式是等价的,选择哪一种取决于个人或团队的编码风格偏好。
访问数组元素
你可以通过索引(从 0 开始)来访问数组中的元素。
typescript
let fruits: string[] = ["Apple", "Orange", "Banana"];
console.log(fruits[0]); // "Apple"
console.log(fruits[1]); // "Orange"
// 修改元素
fruits[2] = "Mango";
console.log(fruits); // ["Apple", "Orange", "Mango"]由于有类型检查,你不能将一个错误类型的值赋给数组元素:
typescript
// fruits[0] = 123; // Error: Type 'number' is not assignable to type 'string'.数组的属性和常用方法
TypeScript 数组拥有和 JavaScript 数组相同的属性和方法。
length 属性
返回数组中元素的数量。
typescript
console.log(fruits.length); // 3修改数组的方法
push(...items): 在数组末尾添加一个或多个元素,并返回新的长度。typescriptfruits.push("Pineapple"); console.log(fruits); // ["Apple", "Orange", "Mango", "Pineapple"]pop(): 删除并返回数组的最后一个元素。typescriptlet lastFruit = fruits.pop(); console.log(lastFruit); // "Pineapple" console.log(fruits); // ["Apple", "Orange", "Mango"]shift(): 删除并返回数组的第一个元素。typescriptlet firstFruit = fruits.shift(); console.log(firstFruit); // "Apple" console.log(fruits); // ["Orange", "Mango"]unshift(...items): 在数组开头添加一个或多个元素,并返回新的长度。typescriptfruits.unshift("Strawberry", "Grape"); console.log(fruits); // ["Strawberry", "Grape", "Orange", "Mango"]splice(start, deleteCount, ...items): 在任意位置添加/删除元素。typescript// 从索引 1 开始,删除 2 个元素,并插入 "Kiwi" fruits.splice(1, 2, "Kiwi"); console.log(fruits); // ["Strawberry", "Kiwi", "Mango"]
遍历数组的方法
forEach(callback): 对数组中的每个元素执行一次提供的函数。typescriptfruits.forEach((fruit, index) => { console.log(`Index ${index}: ${fruit}`); });map(callback): 创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。typescriptlet upperFruits = fruits.map(fruit => fruit.toUpperCase()); console.log(upperFruits); // ["STRAWBERRY", "KIWI", "MANGO"]filter(callback): 创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。typescriptlet longFruits = fruits.filter(fruit => fruit.length > 5); console.log(longFruits); // ["Strawberry"]
多维数组
你也可以创建多维数组(数组的数组)。
typescript
let matrix: number[][] = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
console.log(matrix[1][1]); // 5