diff --git a/packages/eslint-plugin/src/rules/no-unnecessary-type-arguments.ts b/packages/eslint-plugin/src/rules/no-unnecessary-type-arguments.ts index 040650ea05d..12d9c041dfe 100644 --- a/packages/eslint-plugin/src/rules/no-unnecessary-type-arguments.ts +++ b/packages/eslint-plugin/src/rules/no-unnecessary-type-arguments.ts @@ -121,7 +121,12 @@ function getTypeParametersFromType( type: ts.EntityName | ts.Expression | ts.ClassDeclaration, checker: ts.TypeChecker, ): readonly ts.TypeParameterDeclaration[] | undefined { - const sym = getAliasedSymbol(checker.getSymbolAtLocation(type)!, checker); + const symAtLocation = checker.getSymbolAtLocation(type); + if (symAtLocation === undefined) { + return undefined; + } + + const sym = getAliasedSymbol(symAtLocation, checker); if (sym === undefined || sym.declarations === undefined) { return undefined; } diff --git a/packages/eslint-plugin/tests/rules/no-unnecessary-type-arguments.test.ts b/packages/eslint-plugin/tests/rules/no-unnecessary-type-arguments.test.ts index d6ea679f823..7bb37deda8f 100644 --- a/packages/eslint-plugin/tests/rules/no-unnecessary-type-arguments.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unnecessary-type-arguments.test.ts @@ -52,6 +52,7 @@ ruleTester.run('no-unnecessary-type-arguments', rule, { class D extends C { }`, `declare const C: unknown; class D extends C { }`, + `let a: A`, ], invalid: [ {