From 7481a9b3fde90712f808932961600651527d93d8 Mon Sep 17 00:00:00 2001 From: yeonjuan Date: Mon, 18 Mar 2024 22:16:53 +0900 Subject: [PATCH] feat(eslint-plugin): [no-unnecessary-type-arguments] handle tagged templates --- .../rules/no-unnecessary-type-arguments.ts | 8 +++++-- .../no-unnecessary-type-arguments.test.ts | 24 +++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) 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 e10ee7b1b39b..d482ef1b672a 100644 --- a/packages/eslint-plugin/src/rules/no-unnecessary-type-arguments.ts +++ b/packages/eslint-plugin/src/rules/no-unnecessary-type-arguments.ts @@ -132,7 +132,11 @@ function getTypeParametersFromNode( return getTypeParametersFromType(node.typeName, checker); } - if (ts.isCallExpression(node) || ts.isNewExpression(node)) { + if ( + ts.isCallExpression(node) || + ts.isNewExpression(node) || + ts.isTaggedTemplateExpression(node) + ) { return getTypeParametersFromCall(node, checker); } @@ -165,7 +169,7 @@ function getTypeParametersFromType( } function getTypeParametersFromCall( - node: ts.CallExpression | ts.NewExpression, + node: ts.CallExpression | ts.NewExpression | ts.TaggedTemplateExpression, checker: ts.TypeChecker, ): readonly ts.TypeParameterDeclaration[] | undefined { const sig = checker.getResolvedSignature(node); 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 2845cb0f3c4b..0540957f4db4 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 @@ -68,6 +68,14 @@ declare const g: unknown; g(); `, ` +declare const f: unknown; +f\`\`; + `, + ` +function f(template: TemplateStringsArray) {} +f\`\`; + `, + ` class C {} new C(); `, @@ -183,6 +191,22 @@ g(); }, { code: ` +function f(templates: TemplateStringsArray, arg: T) {} +f\`\${1}\`; + `, + errors: [ + { + column: 3, + messageId: 'unnecessaryTypeParameter', + }, + ], + output: ` +function f(templates: TemplateStringsArray, arg: T) {} +f\`\${1}\`; + `, + }, + { + code: ` class C {} function h(c: C) {} `,