TypeScript 泛型与条件类型的深入解析
1. 泛型类型的基础认知
在编程中,我们在值的层面可以编写像 map 、 filter 和 reduce 这样的高阶函数,它们可以接受其他函数作为参数,这为我们提取共享行为提供了极大的灵活性。那么在类型层面是否有类似的功能呢?目前来说,答案是否定的。这类功能通常被称为“类型上的函数的函数”,也就是“高阶类型”。虽然目前没有,但这并不限制我们使用泛型类型,只是会限制我们的表达方式。
1.1 泛型类型的思考方式
我们可以把泛型类型看作是类型之间的函数。在编写泛型时,有以下几点需要记住:
- 用 extends 来约束类型参数的范围,就像使用类型注解来约束函数参数一样。
- 选择能提高代码可读性的类型参数名称,并为它们编写 TSDoc 注释。
- 把泛型函数和类看作是在概念上定义有利于类型推断的泛型类型。
2. 避免不必要的类型参数
编写泛型函数很有趣,但很容易过度使用类型参数。过多的类型参数或在不需要的地方使用约束会使类型推断变得困难,让函数的调用者感到沮丧。这里有一个“泛型黄金法则”:类型参数应该出现两次。类型参数的作用是关联多个值的类型,如果一个类型参数在函数签名中只出现一次,那么它就没有起到关联作用。
2.1 示例分析
2.1.1 身份函数
function identity<T>(arg
深入理解TypeScript泛型与条件类型
超级会员免费看
订阅专栏 解锁全文
728

被折叠的 条评论
为什么被折叠?



