带你读《现代TypeScript高级教程》五、枚举和泛型(1)

简介: 带你读《现代TypeScript高级教程》五、枚举和泛型(1)

五、枚举和泛型

接下来我们将学习TypeScript 中的两个重要主题:枚举(Enums)和泛型(Generics)。这两个特性能大大提高代码的可重用性和安全性。


1.枚举


枚举是 TypeScript 中一种特殊的数据类型,允许我们为一组数值设定友好的名字。枚举的定义使用 enum 关键字。

 

enum Direction {
    Up = 1,
    Down,
    Left,
    Right,}

 

在这个例子中,我们定义了一个名为 Direction 的枚举,它有四个成员:UpDownLeft RightUp 的初始值为 1,其余成员的值会自动递增。

 

除了使用数值,我们也可以使用字符串:

enum Direction {
    Up = "UP",
    Down = "DOWN",
    Left = "LEFT",
    Right = "RIGHT",}

 

此外,TypeScript 还支持计算的和常量成员。常量枚举通过 const enum 进行定义,TypeScript 会在编译阶段进行优化:

 

const enum Enum {
    A = 1,
    B = A * 2}


2.异构枚举


TypeScript 支持数字和字符串混用的枚举,这种类型的枚举被称为异构枚举:

 

enum BooleanLikeHeterogeneousEnum {
    No = 0,
    Yes = "YES",}

 

尽管 TypeScript 支持这种用法,但我们在实际项目中应尽可能避免使用异构枚举,因为这会引入不必要的复杂性。


3.枚举成员的类型


在某些特殊的情况下,枚举成员本身也可以作为一种类型:

 

enum ShapeKind {
    Circle,
    Square,}
interface Circle {
    kind: ShapeKind.Circle;
    radius: number;}
interface Square {
    kind: ShapeKind.Square;
    sideLength: number;}


带你读《现代TypeScript高级教程》五、枚举和泛型(2)https://developer.aliyun.com/article/1348552?groupCode=tech_library

相关文章
|
27天前
|
JavaScript
TypeScript 泛型类型
TypeScript 泛型类型
|
27天前
|
JavaScript Java 编译器
TypeScript 泛型
TypeScript 泛型
|
29天前
|
JavaScript 编译器
35.【TypeScript 教程】编译选项
35.【TypeScript 教程】编译选项
16 2
|
29天前
|
JavaScript 编译器
33.【TypeScript 教程】命名空间
33.【TypeScript 教程】命名空间
18 2
|
6天前
|
JavaScript 安全
TypeScript类型(数字、字符串、字面量、数组、元组、枚举、对象等)
TypeScript类型(数字、字符串、字面量、数组、元组、枚举、对象等)
7 0
|
14天前
|
JavaScript 安全 编译器
TypeScript 基础学习笔记:泛型 <T> vs 断言 as
TypeScript 基础学习笔记:泛型 <T> vs 断言 as
21 0
|
27天前
|
JavaScript 前端开发 测试技术
TypeScript 枚举
TypeScript 枚举
|
27天前
|
JavaScript 编译器
typescript 泛型约束
typescript 泛型约束
|
27天前
|
JavaScript 前端开发 C#
TypeScript 元组 枚举
TypeScript 元组 枚举
|
29天前
|
JavaScript 前端开发
37.【TypeScript 教程】TSLint 与 ESLint
37.【TypeScript 教程】TSLint 与 ESLint
17 0