带你读《现代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

相关文章
|
3月前
|
JavaScript 前端开发 编译器
TypeScript【泛型1、泛型2、声明合并、命名空间 、模块1、模块2、声明文件简介】(五)-全面详解(学习总结---从入门到深化)
TypeScript【泛型1、泛型2、声明合并、命名空间 、模块1、模块2、声明文件简介】(五)-全面详解(学习总结---从入门到深化)
68 0
|
10天前
|
JavaScript 编译器
TypeScript中泛型在函数和类中的应用
【4月更文挑战第23天】TypeScript的泛型在函数和类中提供了灵活性,允许处理多种数据类型。了解泛型是掌握TypeScript类型系统的关键。
|
3天前
|
JavaScript 安全 前端开发
【TypeScript技术专栏】TypeScript泛型编程技巧
【4月更文挑战第30天】TypeScript的泛型编程允许编写适应多种数据类型的函数和类,提高代码复用性。基本概念包括在声明函数、接口或类时使用类型参数。示例:泛型函数`identity<T>`、泛型接口`GenericIdentityFn<T>`和泛型类`GenericNumber<T>`。技巧包括类型推断、泛型约束和泛型数组。在实际开发中,泛型用于创建通用库、装饰器和中间件,提升代码灵活性和复用性。
|
10天前
|
JavaScript 前端开发 编译器
TypeScript中的高级类型:联合类型、交叉类型与条件类型深入解析
【4月更文挑战第23天】探索TypeScript的高级类型。这些特性增强类型系统的灵活性,提升代码质量和维护性。
|
2月前
|
JavaScript 安全
TypeScript 中的高级类型转换技术:映射类型、条件类型和类型推断
TypeScript 中的高级类型转换技术:映射类型、条件类型和类型推断
|
3月前
|
JavaScript
TypeScript中的枚举是什么?
TypeScript中的枚举是什么?
|
3月前
|
JavaScript 安全 索引
TypeScript泛型和类型体操
泛型和类型体操(Type Gymnastics)是 TypeScript 中高级类型系统的重要组成部分。它们提供了强大的工具和技巧,用于处理复杂的类型操作和转换。
|
4月前
|
JavaScript 前端开发 编译器
TypeScript【泛型1、泛型2、声明合并、命名空间 、模块1、模块2、声明文件简介】(五)-全面详解(学习总结---从入门到深化)(下)
TypeScript【泛型1、泛型2、声明合并、命名空间 、模块1、模块2、声明文件简介】(五)-全面详解(学习总结---从入门到深化)
30 0
TypeScript【泛型1、泛型2、声明合并、命名空间 、模块1、模块2、声明文件简介】(五)-全面详解(学习总结---从入门到深化)(下)
|
4月前
|
JavaScript
TypeScript【泛型1、泛型2、声明合并、命名空间 、模块1、模块2、声明文件简介】(五)-全面详解(学习总结---从入门到深化)(上)
TypeScript【泛型1、泛型2、声明合并、命名空间 、模块1、模块2、声明文件简介】(五)-全面详解(学习总结---从入门到深化)
36 0
|
4月前
|
JavaScript 前端开发 程序员
TypeScript【枚举、联合类型函数_基础、函数_参数说明 、类的概念、类的创建】(二)-全面详解(学习总结---从入门到深化)
TypeScript【枚举、联合类型函数_基础、函数_参数说明 、类的概念、类的创建】(二)-全面详解(学习总结---从入门到深化)
19 0