TypeScript 类型开发技巧与实践
1. 构建器方法调用问题及解决
在使用构建器时,可能会遇到方法调用的类型问题。例如,有如下代码:
class StringOptionBuilder extends OptionBuilder<string> {
safeAdd(name: string, value: string) {
if (!this.has(name)) {
this.add(name, value);
}
return this;
}
}
const languages = new StringOptionBuilder()
.add("en", "English")
.safeAdd("de", "Deutsch")
// ^
// Property 'safeAdd' does not exist on type 'OptionBuilder<string>'.(2339)
.safeAdd("de", "German")
.build();
这里 TypeScript 提示 safeAdd 方法不存在于 OptionBuilder<string> 类型上。问题在于 add 方法的返回类型注解过于宽泛,导致丢失了 StringOptionBuilder 更窄的类型信息。
解决方案是使用 this 作
超级会员免费看
订阅专栏 解锁全文
861

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



