概念
TypeScript的泛型与其他面向对象的语言中的定义是相似的。泛型可以理解为在我们定义函数、接口或者类的时候,不预先指定其相关的类型,而是在使用的时候手动指定类型。这和TypeScript基础类型中的any是有区别的。点击免费学习
当我们不使用泛型的时候,可能就如下这样:
|
上面例子中用any或许没有什么问题,但是当我们想传入的参数类型和返回值类型相同时,使用any时的返回值就可能有多种情况了。还有就是我们平时也会考虑重用性,提取公共组件等。这时泛型就能派上了。下面是一个泛型函数的例子:
|
这个show函数后面的 T ,叫做类型变量,这个我们后面会介绍。这个函数我们可以用两种方法调用。
第一种为传入参数,包括类型参数:
|
第二种为不包括类型参数,这种方式利用了类型推论,这个再后面的章节会讲到:
|
泛型变量
上面所写的例子中,我们可以在“<>”中指定一个变量T,并且我们要把这个T定义在参数和返回值上。编译器在检查我们的代码的时候,我们必须在函数体中正确的使用这个通用的类型。