以下代码在TypeScript中是合法的:
let asyncCondition = async(): Promise<boolean> => // .. calculate & return a boolean
if(asyncCondition()){ // forgot to await. condition is always true
// .. do stuff
}
Run Code Online (Sandbox Code Playgroud)
由于asyncCondition()返回正常的非null Promise,因此if块中的代码将始终执行.这是JavaScript行为,TypeScript不会抱怨是可以理解的.
但在上面的场景中,我真正的意思是:
let asyncCondition = async(): Promise<boolean> => // .. calculate & return a boolean
if(await asyncCondition()){ // condition is asyncCondition()
// .. do stuff
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让TypeScript为我检查这种错误?
编译器不会执行此操作,并且我希望它不会在不久的将来执行此操作。已被询问并拒绝多次。我能找到的情况:
在每种情况下,在不更改编译器的情况下关闭这些问题的理由是,这将是一个过于彻底的更改,而实际上,lint应该可以完成这项工作。
好消息是,最近有一条新规则合并到tslint的代码库中,以提供有关此问题的警告。据我所知,该规则尚未在的发行版本中tslint。释放后,如果您在规则中设置strict-boolean-expressions为,则当您使用条件且表达式不是严格布尔值时,将向您发出警告。truetslinttslint
| 归档时间: |
|
| 查看次数: |
686 次 |
| 最近记录: |