Appearance
泛型:参数化类型、约束与类型推导链路
主题边界
- 泛型允许函数、类型别名、接口和类在定义阶段只描述关系,在调用阶段再代入具体类型。
- 它的本质是参数化类型,而不是模板字符串式替换。
机制与流程
- 编译器会根据实参位置、返回值位置和上下文类型推导泛型参数;无法推导时才需要显式传入。
extends约束用于限制泛型参数可接受的范围,并允许在实现中安全访问约束上的属性。- 条件类型、映射类型和 infer 让泛型从简单占位扩展为类型级运算系统。
关键差异
- 无约束泛型只保留关系,不保证可访问成员;有约束泛型换来更强表达能力,但也更容易让推导失败。
- 运行时不存在泛型实例化,所有收益都发生在编译期。
边界条件
- 把泛型写得过度抽象会降低可读性,尤其在业务代码里未必比直接写具体类型更好。
- 泛型参数过多、条件分发过深会明显拖慢类型检查。
工程落点
- 组件库、请求封装、表单系统和状态工具都依赖泛型表达输入输出之间的关系。
- 泛型设计质量会直接影响 IDE 提示、错误可读性和公共 API 的可扩展性。