ts-泛型

72 阅读1分钟

什么是泛型?

我们可以借用 Java 中泛型的释义来回答这个问题:泛型指的是类型参数化,即将原来某种具体的类型进行参数化。和定义函数参数一样,我们可以给泛型定义若干个类型参数,并在调用时给泛型传入明确的类型参数。设计泛型的目的在于有效约束类型成员之间的关系,比如函数参数和返回值、类或者接口成员和方法之间的关系。

此时,reflect 函数虽然可以接收一个任意类型的参数并原封不动地返回参数的值,不过返回值类型不符合我们的预期。因为我们希望返回值类型与入参类型一一对应(比如 number 对 number、string 对 string),而不是无论入参是什么类型,返回值一律是 unknown。

此时,泛型正好可以满足这样的诉求,那如何定义一个泛型参数呢?首先,我们把参数 param 的类型定义为一个(类型层面的)参数、变量,而不是一个明确的类型,等到函数调用时再传入明确的类型。

比如我们可以通过尖括号 <> 语法给函数定义一个泛型参数 P,并指定 param 参数的类型为 P 此文章为9月Day020学习笔记,内容来源于极客时间《重学前端》,强烈推荐该课程