TypeScript 类型系统与类型推断的最佳实践
1. 类型抽象的注意事项
在进行类型抽象时,要避免过早抽象。例如,以下代码试图将 id 和 name 提取到一个公共接口中:
interface NamedAndIdentified {
id: number;
name: string;
}
interface Product extends NamedAndIdentified {
priceDollars: number;
}
interface Customer extends NamedAndIdentified {
address: string;
}
然而, id 和 name 在 Product 和 Customer 中可能代表不同的含义,未来可能会有不同的变化。这种过早的抽象可能会使这两个类型在未来难以独立发展。
一个实用的经验法则是,如果难以给一个类型(或函数)命名,那么它可能不是一个有用的抽象。记住,“重复比错误的抽象代价要小得多”。
在类型空间中,也要遵循 DRY(不要重复自己)原则:
- 为类型命名,而不是重复它们。使用 extends 来避免在接口中重复字段。
- 理解 TypeScript 提供的用于类型映射的工具,如 keyof 、 ty
超级会员免费看
订阅专栏 解锁全文
39

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



