-
什么是泛型
在软件工程中,我们不仅应该创建一致和明确定义的 API,还应该考虑可重复使用性。组件不仅可以支持当前数据类型,还可以支持未来数据类型,这在创建大型系统时提供了非常灵活的功能。在像 C#和Java 这样的语言中,可以使用泛型来创建可重复使用的组件,其中一个组件可以支持多种类型的数据。这允许用户使用其自己的数据类型来使用组件。
-
什么时候用泛型
需要定义一个可以打印任意类型参数并返回参数的函数。原本只支持打印字符串类型的参数,但是需要增加对数字类型和数组类型的支持。所以需要一个类型解决输入输出相关联的问题。
-
泛型的基本使用方法
泛型是一种能够在代码中动态使用不同类型的方法,它可以通过在代码中使用 “<>” 符号来传递类型参数,通常使用 “T” 来代表类型参数。在使用时,有两种方法可以指定类型:一种是显式地定义要使用的类型,另一种是通过 TypeScript 的类型推导机制自动推导类型。泛型的作用是在编写代码时先占位,等到传入实际类型时再通过类型推导进行替换。
-
泛型的基本操作符
- typeof: 获取类型,可以用于获取任何给定值的编译时类型。例如:typeof x会返回变量x的类型。
- keyof: 获取所有键,可以用于获取给定类型的所有键名。例如:keyof T会返回类型T的所有键名。
- in: 遍历枚举类型,可以用于遍历枚举类型中的所有键名。例如:K in keyof T会遍历类型T的所有键名,并赋值给变量K。
- T[K]: 索引访问,可以用于获取类型T中的某个键名的类型。例如:T[K]会返回类型T中键名为K的属性的类型。
- extends: 泛型约束,可以用于对泛型类型进行约束,使其只能传递满足给定条件的类型。例如:T extends U会使得泛型类型T必须是类型U的子类型。