Skip to content

Enhancement: [no-unsafe-return] Disallow return Promise<any> #8674

Closed
@yeonjuan

Description

@yeonjuan

Before You File a Proposal Please Confirm You Have Done The Following...

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    accepting prsGo ahead, send a pull request that resolves this issueenhancement: plugin rule optionNew rule option for an existing eslint-plugin rulelocked due to agePlease open a new issue if you'd like to say more. See https://typescript-eslint.io/contributing.package: eslint-pluginIssues related to @typescript-eslint/eslint-plugin

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions