我想要一个规则来防止 Promise<boolean>
从被转换到boolean
:
// ERROR: This is always true because it is a promise
if( !authorize() ){
throw new Error('Go away!');
}
正确:
// Good, only true if the promise result is true
if( !await authorize() ){
throw new Error('Go away!');
}
给定这样的东西:
async authorize(){
// I don't really support bribery
return await doesUserHaveCredentials() || didUserPayMeABunchOfMoney();
}
我试过的规则:
- require-await:这个名字看起来不错,但这个规则只是检查异步函数是否在某处包含 await
- @typescript-eslint/no-floating-promises:有帮助,但不会阻止 bool 类型转换
- @typescript-eslint/strict-boolean-expressions:在这种情况下没有帮助
有人知道在 if(!promise())
上会出错的规则吗? ?
最佳答案
我认为您需要 @typescript-eslint/no-misused-promises
中的 checkConditionals
选项(默认启用) :
Examples of incorrect code for this rule with
checksConditionals: true
:const promise = Promise.resolve('value'); if (promise) { // Do something }
关于javascript - 是否有 ESLint 规则来防止 `Promise<boolean>` 到 `boolean` 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66604210/