JS.TS.NO.UNNECESSARY.TYPE.ARGUMENTS

Enforces that type arguments will not be used if not required

Warns if an explicitly specified type argument is the default for that type parameter.

Rule Details

Type parameters in TypeScript may specify a default value. For example:

Copy
function f<T = number>() {}

It is redundant to provide an explicit type parameter equal to that default.

Examples of code for this rule:

<!--tabs-->

Incorrect

Copy
function f<T = number>() {}
f<number>();

function g<T = number, U = string>() {}
g<string, string>();

class C<T = number> {}
function h(c: C<number>) {}
new C<number>();
class D extends C<number> {}

interface I<T = number> {}
class Impl implements I<number> {}

Correct

Copy
function f<T = number>() {}
f<string>();

function g<T = number, U = string>() {}
g<number, number>();

class C<T = number> {}
new C<string>();
class D extends C<string> {}

interface I<T = number> {}
class Impl implements I<string> {}

Options

Copy
// .eslintrc.json
{
  "rules": {
    "@typescript-eslint/no-unnecessary-type-arguments": "warn"
  }
}

This rule is not configurable.

The content on this page is adapted from the ESLint User Guide. Copyright © OpenJS Foundation and other contributors, www.openjsf.org. All rights reserved. https://eslint.org/docs/rules/