TypeScript入门到精通——TypeScript类型系统基础——数组类型

发布时间 2023-10-07 10:28:55作者: 左扬

数组类型

  数组是十分常用的数据结构,它表示一组有序元素的集合。在 TypeScript中,数组值的数据类型为数组类型。

一、数组类型定义

  TypeScript 提供了以下两种方式来定义数组类型:

    • 简单数组类型表示法
    • 泛型数组类型表示法

1.1、简单数组类型表示法

在TypeScript中,你可以使用数组类型表示法来定义一个数组的类型。这是一个基础的方法,直接定义数组元素的类型。

例如,如果我们想要定义一个只包含字符串类型元素的数组,我们可以这样做:

let strArray: string[] = ["Hello", "World"];

在这个例子中,string[]是一个数组类型,它包含的元素都是string类型。

1.2、泛型数组类型表示法

  TypeScript也支持泛型数组类型的表示法。这种类型的数组可以接受的元素类型更为广泛。在泛型数组类型中,我们需要提供一个类型参数,这个参数将作为数组元素的类型。

  例如,如果我们想要定义一个可以接受任何类型的元素的数组,我们可以使用any类型参数:

let anyArray: Array<any> = [1, "Hello", true, null, undefined];

  在这个例子中,Array<any>是一个泛型数组类型,它可以接受任何类型的元素。

  除此之外,我们也可以使用其他类型作为类型参数,例如对象类型、接口类型等。例如,我们可以定义一个对象数组,这个对象具有特定的属性: 

interface Person {  
    name: string;  
    age: number;  
}  
  
let people: Person[] = [  
    { name: "Alice", age: 20 },  
    { name: "Bob", age: 30 },  
];

  在这个例子中,Person[]是一个对象数组类型,它包含的元素都是Person类型的对象。每个Person类型的对象都有nameage两个属性,类型分别为stringnumber。 

1.3、简单数组类型和泛型数组类型的区别是什么

  简单数组类型和泛型数组类型的主要区别在于它们能够容纳的元素类型的范围。

  简单数组类型,如int[],它只能容纳一种特定类型的元素,即整数。如果你尝试添加其他类型的元素(如字符串或布尔值),那么在编译时将会出错。

  泛型数组类型,如Array<T>,则更为灵活。这里的                                                                        T可以是任何类型,包括简单类型(如string或number)和复杂类型(如Person或Object)。这意味着你可以将任何类型的元素添加到泛型数组中,只要这些元素符合你为T指定的类型。

  因此,你可以根据需要选择使用哪种数组类型。如果数组元素的类型是固定的,那么简单数组类型可能是更好的选择。如果需要存储多种类型的元素,或者元素类型可能是变化的,那么泛型数组类型就更为合适了。

二、只读数组

  只读数组与常规数组的区别在于,只读数组仅允许程序读取数组元素而不允许修改数组元素。