diff --git a/packages/eslint-plugin/src/rules/consistent-type-imports.ts b/packages/eslint-plugin/src/rules/consistent-type-imports.ts index d1fd6444561b..c06097716fb5 100644 --- a/packages/eslint-plugin/src/rules/consistent-type-imports.ts +++ b/packages/eslint-plugin/src/rules/consistent-type-imports.ts @@ -136,6 +136,7 @@ export default createRule({ } else { if ( !sourceImports.valueOnlyNamedImport && + node.specifiers.length && node.specifiers.every( specifier => specifier.type === AST_NODE_TYPES.ImportSpecifier, diff --git a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts index 117a7a374d33..9e01955b4a5c 100644 --- a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts @@ -2230,6 +2230,49 @@ let baz: D; }, ], }, + // https://github.com/typescript-eslint/typescript-eslint/issues/7209 + { + code: ` +import 'foo'; +import type { Foo, Bar } from 'foo'; +@deco +class A { + constructor(foo: Foo) {} +} + `, + output: ` +import 'foo'; +import { Foo} from 'foo'; +import type { Bar } from 'foo'; +@deco +class A { + constructor(foo: Foo) {} +} + `, + errors: [{ messageId: 'aImportInDecoMeta', line: 3, column: 1 }], + parserOptions: withMetaConfigParserOptions, + }, + { + code: ` +import {} from 'foo'; +import type { Foo, Bar } from 'foo'; +@deco +class A { + constructor(foo: Foo) {} +} + `, + output: ` +import {} from 'foo'; +import { Foo} from 'foo'; +import type { Bar } from 'foo'; +@deco +class A { + constructor(foo: Foo) {} +} + `, + errors: [{ messageId: 'aImportInDecoMeta', line: 3, column: 1 }], + parserOptions: withMetaConfigParserOptions, + }, { code: ` import A from 'foo';