Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork2.8k
Open
Description
Before You File a Proposal Please Confirm You Have Done The Following...
- I havesearched for related issues and found none that match my proposal.
- I have searched thecurrent rule list and found no rules that match my proposal.
- I haveread the FAQ and my problem is not listed.
My proposal is suitable for this project
- My proposal specifically checks TypeScript syntax, or it proposes a check that requires type information to be accurate.
- My proposal is not a "formatting rule"; meaning it does not just enforce how code is formatted (whitespace, brace placement, etc).
- I believe my proposal would be useful to the broader TypeScript community (meaning it is not a niche proposal).
Description
The rule is similar tohttps://typescript-eslint.io/rules/no-confusing-void-expression.
I've found code thatreturn
s promises that result invoid
. The intent in that case is toawait
the promise, not to return its value.
Fail Cases
asyncfunctionfoo(){returnnewPromise(resolve=>setTimeout(resolve))}asyncfunctionfoo(){constdeferred=Promise.withResolvers<undefined>();deferred.resolve(undefined);returndeferred.promise;}
Pass Cases
asyncfunctionfoo(){awaitnewPromise(resolve=>setTimeout(resolve))}asyncfunctionfoo(){constdeferred=Promise.withResolvers<undefined>();deferred.resolve(undefined);awaitdeferred.promise;}
Additional Info
I can't think of a situation where you'd want toreturn
avoid
since the expression is equivalent to:
functionfoo(){returnundefined;}
an exception may or may not be made for promise-returning sync functions:
functionfoo(){returnPromise.resolve()}
But those are covered bypromise-function-async