type、interface 与泛型
type 和 interface 的区别
两者都能描述对象,并且多数场景可以互换。
主要差异:
选择建议:
- 对外暴露、可能被扩展的对象契约优先
interface。 - 联合类型、工具类型和复杂组合优先
type。 - 团队一致性比机械坚持某一种更重要。
泛型解决什么问题
泛型让类型之间的关系由调用方决定,同时保留推导能力。
不用泛型而返回 any 会丢失输入与输出的关系。
泛型约束
这里的关键关系是:K 必须是 T 的键,返回值则是对应属性的类型。
keyof、typeof 与索引访问类型
注意 TypeScript 的 typeof 出现在类型位置时用于获取变量的静态类型,不等同于运行时 typeof 运算符。
组件泛型示例
设计泛型 API 时,应让 TypeScript 尽量从参数推导类型,避免要求调用者重复书写泛型参数。

