我发现忘记在await
TypeScript代码中添加async
以下以检查缓存变量并从async
方法请求它的模式中重复执行相同的错误。问题是我正在使用逐渐类型化的库,并且可以将返回的联合类型传递给无类型的API,而不会出现设计时错误。
public async sample() {
let address = this.address || this.getAddressAsync();
let valid = <boolean>this.untypedUtil.validateAddress(address);
return valid;
}
getAddressAsync
返回Primise<string>
而this.address
为string
。该变量变为string | Primise<string>
,但this.untypedUtil.validateAddress
来自JS,并不关心。手动添加类型注释似乎打败了TS逐渐非侵入式类型的初始愿景,并且许多短语已经很好地保护我免受我的愚蠢错误。
如果我在async
方法中,我通常不希望任何T | Promise<T>
的{{1}}发生这种情况,这似乎是合理的,我希望一个linter规则有警告对此。