TypeScript 泛型 | 青训营笔记

43 阅读2分钟
  1. 什么是泛型

    在软件工程中,我们不仅应该创建一致和明确定义的 API,还应该考虑可重复使用性。组件不仅可以支持当前数据类型,还可以支持未来数据类型,这在创建大型系统时提供了非常灵活的功能。在像 C#和Java 这样的语言中,可以使用泛型来创建可重复使用的组件,其中一个组件可以支持多种类型的数据。这允许用户使用其自己的数据类型来使用组件。

  2. 什么时候用泛型

    需要定义一个可以打印任意类型参数并返回参数的函数。原本只支持打印字符串类型的参数,但是需要增加对数字类型和数组类型的支持。所以需要一个类型解决输入输出相关联的问题。

  3. 泛型的基本使用方法

    泛型是一种能够在代码中动态使用不同类型的方法,它可以通过在代码中使用 “<>” 符号来传递类型参数,通常使用 “T” 来代表类型参数。在使用时,有两种方法可以指定类型:一种是显式地定义要使用的类型,另一种是通过 TypeScript 的类型推导机制自动推导类型。泛型的作用是在编写代码时先占位,等到传入实际类型时再通过类型推导进行替换。

  4. 泛型的基本操作符

    1. typeof: 获取类型,可以用于获取任何给定值的编译时类型。例如:typeof x会返回变量x的类型。
    2. keyof: 获取所有键,可以用于获取给定类型的所有键名。例如:keyof T会返回类型T的所有键名。
    3. in: 遍历枚举类型,可以用于遍历枚举类型中的所有键名。例如:K in keyof T会遍历类型T的所有键名,并赋值给变量K。
    4. T[K]: 索引访问,可以用于获取类型T中的某个键名的类型。例如:T[K]会返回类型T中键名为K的属性的类型。
    5. extends: 泛型约束,可以用于对泛型类型进行约束,使其只能传递满足给定条件的类型。例如:T extends U会使得泛型类型T必须是类型U的子类型。