Skip to content

Enhancement: [no-explicit-any] suggest to replace keyof any with PropertyKey #11009

Closed
@KuSh

Description

@KuSh

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-explicit-any

Description

Suggest to replace keyof any (and keyof never?) with PropertyKey as it is more explicit.
This can even be an auto fixable thing.

Fail

const integer = <TKey extends keyof any, TTarget extends { [K in TKey]: number }>(
  target: TTarget,
  key: TKey
) => { /* ... */ };

Pass

const integer = <TKey extends PropertyKey, TTarget extends { [K in TKey]: number }>(
  target: TTarget,
  key: TKey
) => { /* ... */ };

Additional Info

Extracted from #3206

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