Skip to main content

no-unnecessary-type-assertion

Disallow type assertions that do not change the type of an expression.

This rule prohibits using a type assertion that does not change the type of an expression.

Attributes

  • Included in configs
    • ✅ Recommended
    • 🔒 Strict
  • Fixable
    • 🔧 Automated Fixer
    • 🛠 Suggestion Fixer
  • 💭 Requires type information

Rule Details

This rule aims to prevent unnecessary type assertions.

Examples of code for this rule:

const foo = 3;
const bar = foo!;
const foo = <3>3;
type Foo = 3;
const foo = <Foo>3;
type Foo = 3;
const foo = 3 as Foo;
function foo(x: number): number {
return x!; // unnecessary non-null
}

Options

This rule optionally takes an object with a single property typesToIgnore, which can be set to a list of type names to ignore.

For example, with @typescript-eslint/no-unnecessary-type-assertion: ["error", { typesToIgnore: ['Foo'] }], the following is correct code":

type Foo = 3;
const foo: Foo = 3;

When Not To Use It

If you don't care about having no-op type assertions in your code, then you can turn off this rule.