#2180·oxc

☂️ typescript-eslint

Author: BoshenCreated Jan 26, 2024Updated Sep 17, 2026
LabelsA-linter

[!WARNING] This comment is maintained by CI. Do not edit this comment directly. To update comment template, see https://github.com/oxc-project/oxc/tree/main/tasks/lint_rules

This is the tracking issue for @typescript-eslint/eslint-plugin.

There are 126(+ 9 deprecated) rules.

  • 0/43 recommended rules are remaining as TODO
    • 1 of which have pending fixes
    • All done!
  • 5/83 not recommended rules are remaining as TODO
    • 6 of which have pending fixes

To get started, run the following command:

bash
just new-typescript-rule <RULE_NAME>

Then implement the rule and get all the tests passing.

Recommended rules

✅: 43, : 0, ⏳: 1 / total: 43
Status Name Rationale
typescript/await-thenable
typescript/ban-ts-comment
typescript/no-array-constructor
typescript/no-array-delete
typescript/no-base-to-string
typescript/no-duplicate-enum-values
typescript/no-duplicate-type-constituents
typescript/no-empty-object-type
typescript/no-explicit-any
typescript/no-extra-non-null-assertion
typescript/no-floating-promises
typescript/no-for-in-array
typescript/no-implied-eval
typescript/no-misused-new
typescript/no-misused-promises
typescript/no-namespace
typescript/no-non-null-asserted-optional-chain
typescript/no-redundant-type-constituents
✅⏳ typescript/no-require-imports
typescript/no-this-alias
typescript/no-unnecessary-type-assertion
typescript/no-unnecessary-type-constraint
typescript/no-unsafe-argument
typescript/no-unsafe-assignment
typescript/no-unsafe-call
typescript/no-unsafe-declaration-merging
typescript/no-unsafe-enum-comparison
typescript/no-unsafe-function-type
typescript/no-unsafe-member-access
typescript/no-unsafe-return
typescript/no-unsafe-unary-minus
typescript/no-unused-expressions
typescript/no-unused-vars
typescript/no-wrapper-object-types
typescript/only-throw-error
typescript/prefer-as-const
typescript/prefer-namespace-keyword
typescript/prefer-promise-reject-errors
typescript/require-await
typescript/restrict-plus-operands
typescript/restrict-template-expressions
typescript/triple-slash-reference
typescript/unbound-method

✅ = Implemented, = Not intending to implement, ⏳ = Fix pending

Not recommended rules

✅: 77, : 1, ⏳: 6 / total: 83
Status Name Rationale
typescript/adjacent-overload-signatures
typescript/array-type
typescript/ban-tslint-comment
typescript/class-literal-property-style
typescript/class-methods-use-this
typescript/consistent-generic-constructors
typescript/consistent-indexed-object-style
typescript/consistent-return
typescript/consistent-type-assertions
typescript/consistent-type-definitions
typescript/consistent-type-exports
typescript/consistent-type-imports
typescript/default-param-last
typescript/dot-notation
typescript/explicit-function-return-type
typescript/explicit-member-accessibility
typescript/explicit-module-boundary-types
typescript/init-declarations
typescript/max-params
typescript/member-ordering
✅⏳ typescript/method-signature-style
typescript/naming-convention
typescript/no-confusing-non-null-assertion
typescript/no-confusing-void-expression
typescript/no-deprecated
typescript/no-dupe-class-members
typescript/no-dynamic-delete
typescript/no-empty-function
typescript/no-extraneous-class
typescript/no-generated-empty-object-type
typescript/no-import-type-side-effects
typescript/no-inferrable-types
typescript/no-invalid-this This rule is checked by the TypeScript compiler when the noImplicitThis compiler option is enabled. In TypeScript versions prior to 6.0, this compiler option is not enabled by default, however it is a best practice to enable it.
typescript/no-invalid-void-type
✅⏳ typescript/no-magic-numbers
typescript/no-meaningless-void-operator
typescript/no-misused-spread
typescript/no-mixed-enums
typescript/no-non-null-asserted-nullish-coalescing
✅⏳ typescript/no-non-null-assertion
typescript/no-redeclare
typescript/no-restricted-types
typescript/no-shadow
✅⏳ typescript/no-unnecessary-boolean-literal-compare
typescript/no-unnecessary-condition
typescript/no-unnecessary-parameter-property-assignment
typescript/no-unnecessary-qualifier
typescript/no-unnecessary-template-expression
typescript/no-unnecessary-type-arguments
typescript/no-unnecessary-type-conversion
typescript/no-unnecessary-type-parameters
typescript/no-unsafe-type-assertion
typescript/no-unused-private-class-members
typescript/no-use-before-define
typescript/no-useless-constructor
typescript/no-useless-default-assignment
typescript/no-useless-empty-export
typescript/non-nullable-type-assertion-style
typescript/parameter-properties
typescript/prefer-destructuring
typescript/prefer-enum-initializers
typescript/prefer-find
✅⏳ typescript/prefer-for-of
typescript/prefer-function-type
typescript/prefer-includes
typescript/prefer-literal-enum-member
typescript/prefer-nullish-coalescing
typescript/prefer-optional-chain
typescript/prefer-readonly
typescript/prefer-readonly-parameter-types
typescript/prefer-reduce-type-parameter
typescript/prefer-regexp-exec
typescript/prefer-return-this-type
typescript/prefer-string-starts-ends-with
typescript/promise-function-async
typescript/related-getter-setter-pairs
typescript/require-array-sort-compare
typescript/return-await
✅⏳ typescript/strict-boolean-expressions
typescript/strict-void-return
typescript/switch-exhaustiveness-check
typescript/unified-signatures
typescript/use-unknown-in-catch-callback-variable

✅ = Implemented, = Not intending to implement, ⏳ = Fix pending

Deprecated rules

✅: 6, : 3, ⏳: 1 / total: 9
Status Name Rationale
✅⏳ typescript/no-empty-interface
typescript/no-loop-func
typescript/no-loss-of-precision
typescript/no-restricted-imports
typescript/no-type-alias Deprecated, replaced by typescript-eslint/consistent-type-definitions rule.
typescript/no-var-requires
typescript/prefer-ts-expect-error
typescript/sort-type-constituents Deprecated, replaced by perfectionist/sort-intersection-types and perfectionist/sort-union-types rules.
typescript/typedef Deprecated.

✅ = Implemented, = Not intending to implement, ⏳ = Fix pending