【发布时间】:2020-03-20 03:46:56
【问题描述】:
Javascript 或 Typescript 生态系统中是否有工具可以检测同步函数上 await 的(错误/过度)使用? (例如 tslint 规则)
当我错误地使用await作为同步函数的结果时,问题就出现了,
const decoded = await jsonwebtoken.verify(session, publicKey, opts);
我的 linter,默认的 gts tslint,没有捕捉到。代码奇怪地工作(await 默默地传递非承诺?),但我想标记滥用以鼓励使用异步/回调选项。
我原以为这样滥用await会触发Typescript错误,但tsc和ts-jest通过了以下测试:
test('Demonstrate await', async () => {
function foo(): number { return 4; }
const food = await foo(); // Even replace foo() with a constant or literal.
expect(food).toBe(4);
});
【问题讨论】:
-
这不是错误,将
await用于非承诺的值是完全合法的:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
标签: javascript async-await eslint tslint