Closed
Description
Before You File a Proposal Please Confirm You Have Done The Following...
- I have searched for related issues and found none that match my proposal.
- I have searched the current rule list and found no rules that match my proposal.
- I have read the FAQ and my problem is not listed.
My proposal is suitable for this project
- I believe my proposal would be useful to the broader TypeScript community (meaning it is not a niche proposal).
Link to the rule's documentation
https://typescript-eslint.io/rules/no-unsafe-return
Description
This proposal is to make no-unsafe-return
disallow Promise<any>
as well.
playground
declare const promise: Promise<any>;
const bar = async () => await promise; // Error (ok)
const baz = async () => promise; // Currently, it does not report errors.
https://typescript-eslint.io/rules/no-unsafe-return
Despite your best intentions, the any type can sometimes leak into your codebase. Returning an an any-typed value from a function creates a potential type safety hole and source of bugs in your codebase.
If a Promise<any>
value is returned, the any type can leak into your code.
declare const promise: Promise<any>;
const baz = async () => promise;
function addOne(num: number) {
return num + 1;
}
(async () => {
addOne(await baz()); // no type error
});
Fail
declare const promise: Promise<any>;
const foo = () => promise;
const bar = async () => promise;
// ...
Pass
declare const promise: Promise<number>;
const foo = () => promise;
Additional Info
No response