javascript - 是否有 ESLint 规则来防止 `Promise<boolean>` 到 `boolean` 转换

标签 javascript typescript promise eslint

我想要一个规则来防止 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/

相关文章:

typescript - 定义具有可选的第一个和最后一个元素的元组列表

node.js - nightmare.js,在.evaluate上,这给了我一个关于 Node 的错误

javascript - 为什么 angularjs 在每次输入更改时都不必要地继续调用 Controller 函数以及如何停止该行为?

javascript - jQuery 动画按钮

javascript - Typescript:为什么不带参数的函数可以转换为带参数的函数

typescript - 如何在 TypeScript 1.8 中导入 jQuery npm 模块

javascript - 如何正确地将 Function.apply.bind 应用于 Promise 的解析处理程序 then()?

javascript - 使用 Promise 进行顺序加载

javascript - AngularJS UI 路由器嵌套状态不工作

javascript - 滚动时背景图像变化