diff --git a/src/script-setup/scope-analyzer.ts b/src/script-setup/scope-analyzer.ts index e4f892a..1c078fa 100644 --- a/src/script-setup/scope-analyzer.ts +++ b/src/script-setup/scope-analyzer.ts @@ -205,6 +205,12 @@ function analyzeUsedInTemplateVariables( variable.references.push(reference) reference.resolved = variable + + if (reference.isTypeReference) { + // @typescript-eslint/no-unused-vars treats type references at the same position as recursive references, + // so without this flag it will be marked as unused. + ;(variable as any).eslintUsed = true + } } function processVExpressionContainer(node: VExpressionContainer) { diff --git a/test/fixtures/integrations/script-setup-with-typescript-eslint/no-unused-vars/.eslintrc.json b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-unused-vars/.eslintrc.json new file mode 100644 index 0000000..7592b0b --- /dev/null +++ b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-unused-vars/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "rules": { + "@typescript-eslint/no-unused-vars": "error" + } +} diff --git a/test/fixtures/integrations/script-setup-with-typescript-eslint/no-unused-vars/valid/type-def.vue b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-unused-vars/valid/type-def.vue new file mode 100644 index 0000000..ba631bf --- /dev/null +++ b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-unused-vars/valid/type-def.vue @@ -0,0 +1,14 @@ + + + \ No newline at end of file