如何在Typescript中创建一个多类型的数组

2,659 阅读2分钟

array 是一种在一个名称下存储多个元素的类型。通常情况下,Array 存储单一类型的数据。Datatype 是一种原始类型,如数字、字符串或布尔值,或对象,如类或接口。

让我们来声明一个array

Arrays 使用Generic Array Type syntaxsquare bracket syntax 来定义。

例如,数组(Array of numbers)用数据类型number来声明和初始化。

// square bracket syntax.
let numbers:number[]=[1,2,3,4,5];
 //Array Type
let numbers1:Array=[1,2,3,4,5];

同样的方法,字符串也声明和初始化,如下图所示

// square bracket syntax.
let words:string[]=["one","two","three","four"];
 //Array Type
let words1:Array=["one","two","three","four"];

看一下上面的两个例子。

它定义了一个只能存储一种数据类型的数组,如字符串或数字。

如何声明一个有多种类型的数组?

在Typescript中:

你可以使用union typeUnion type ,允许将现有的类型和数据存储从一个联盟类型中组合起来。

Union type 用管道(|)符号表示数字和字符串的(数字|字符串)

// square bracket syntax.
let words:(number|string)[]=["one",1,"two","three","four"];
 //Array Type
let words1:Array=["one",1,"two",2,"three","four"];

上面的例子声明了一个数字和字符串的联合类型的数组。它只存储数字或字符串数据,不允许存储任何其他类型。

数组联合类型用数组类型或方括号语法声明。

另一种方法是使用type alias 语法。

Type keyword 允许从现有类型中创建一个新的类型。

让我们用以下方式创建一个新的类型type keyword

type MyArrayType = number | string ;

MyArrayType是一个新的数据类型,是数字和字符串类型的联合。它只接受数字和字符串数据。

创建一个数组,如下所示

let words2: MyArrayType[] = ["one",1,"two","three","four"];
let words3: Array = ["one",1,"two","three","four"];

如何在TypeScript中声明不同类型的对象的数组?

我们也可以创建一个混合类型的数组,如对象和接口。

让我们声明一个Employee和User对象

class Employee {

    id: number;
    name: string;
    
    constructor(id: number, name: string ) {
            this.id = id;
            this.name = name;
    }
      printEmployeeInfo():void {
        console.log("Id = " + this.id +  ", name = " + this.name);
    }
}

User.ts

interface User {

    id: number;
    name: string;
    active:boolean;
   
}

让我们用类和接口声明一个多类型的数组。

声明了一个array ,其中有Employee类和interface user的union

let all:Array=[] // Array type
let all1:(Employee |  User)[]=[] // Using Typeguard generics 

结论

总结一下,学习如何定义一个单一类型或多个类型的数组。

用Union类型或类型别名来定义多类型的数组。