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 方法的注解过于宽泛,导致丢失了更具体的类型信息。解决办法是使用 this 作为返回类型:
超级会员免费看
订阅专栏 解锁全文
1260

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



