泛型
软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。
在像C#和Java这样的语言中,可以使用泛型
来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。
泛型的特点
- 支持多种类型的数据(不特定的数据类型)。
- 传入的类型与返回的类型应该是相同的。
- 使用类型变量且指标是类型,不是值。
- 泛型的类型取决于调用的时候传入的参数类型。
- 对不特定类型数据的校验。
不用泛型的话,这个函数可能是下面这样:
function identity(arg: number): number {
return arg;
}
或者,我们使用any
类型来定义函数:
function identity(arg: any): any {
return arg;
}
这里存在一个问题,就是如果返回值是any会导致这个函数可以接收任何类型的arg
参数,即any放弃了类型检查,这样就丢失了一些信息:传入的类型与返回的类型应该是相同的。如果我们传入一个数字,我们只知道任何类型的值都有可能被返回。