购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.4 TypeScript高级数据类型

除了上面所介绍的基础数据类型外,TypeScript中还可以使用一些高级数据类型,如泛型、交叉类型、联合类型。

4.4.1 泛型

TypeScript中引入了C#中的泛型(Generic),泛型解决类、接口、方法的复用性及对不特定数据类型的支持。

1.泛型类

泛型类可以支持不特定的数据类型,要求传入的参数和返回的参数必须一致,T表示泛型,具体是什么类型在调用这种方法时才决定,如代码示例4-22所示。

代码示例4-22

2.泛型接口

泛型接口如代码示例4-23所示。

代码示例4-23

3.泛型类

通过泛型类可以定义一个操作数据库的库,支持MySQL、MS-SQL、MongoDB,要求MySQL、MS-SQL、MongoDB功能一样,都有add、update、delete、get方法,如代码示例4-24所示。

代码示例4-24

4.4.2 交叉类型

交叉类型(Intersection Types)是将多种类型合并为一种类型。这可以把现有的多种类型叠加到一起而成为一种类型,它包含了所需的所有类型的特性。交叉类型包含A的特点,也包含B的特点,伪代码表示就是A&B。

下面定义了两种类型:Person和Student,变量student的类型是Person和Student的交叉类型,student的类型必须满足两种类型的交叉组合体要求,如代码示例4-25所示。

代码示例4-25

同时Person&Student可以使用类型别名,下面代码中定义的StudentInfo就是Person&Student的类型别名,如代码示例4-26所示。

代码示例4-26

4.4.3 联合类型

联合类型(Union Types)既可以是A,也可以是B,伪代码表示就是A|B,如代码示例4-27所示。

代码示例4-27

上面的type的类型就是number和boolean的联合类型,type的值是这两种类型中的一种,下面定义了一种由字面量类型组合成的一个新的联合类型,如代码示例4-28所示。

代码示例4-28

字面量联合类型的形式与枚举类型有些类似,所以,如果仅使用数字,则可以考虑是否使用具有表达性的枚举类型。 mOK2571hI8G7Ztyi/uGCgX7EbgmO1EMhJdkon1Xr0Iqc5PuTSl4eyinZsKYm7/6P

点击中间区域
呼出菜单
上一章
目录
下一章
×