diff --git a/src/rules/extensions.js b/src/rules/extensions.js index 74f478b66d..c22d1f87bf 100644 --- a/src/rules/extensions.js +++ b/src/rules/extensions.js @@ -136,11 +136,6 @@ module.exports = { } function checkFileExtension(source, node) { - // ignore type-only imports - if (node.importKind === 'type') { - return; - } - // bail if the declaration doesn't have a source, e.g. "export { foo };", or if it's only partially typed like in an editor if (!source || !source.value) return; @@ -170,6 +165,8 @@ module.exports = { ) || isScoped(importPath); if (!extension || !importPath.endsWith(`.${extension}`)) { + // ignore type-only imports + if (node.importKind === 'type') return; const extensionRequired = isUseOfExtensionRequired(extension, isPackage); const extensionForbidden = isUseOfExtensionForbidden(extension); if (extensionRequired && !extensionForbidden) { diff --git a/tests/src/rules/extensions.js b/tests/src/rules/extensions.js index 50f690395f..93ebc28f8e 100644 --- a/tests/src/rules/extensions.js +++ b/tests/src/rules/extensions.js @@ -606,7 +606,7 @@ describe('TypeScript', () => { ruleTester.run(`${parser}: extensions ignore type-only`, rule, { valid: [ test({ - code: 'import type { T } from "./typescript-declare";', + code: 'import type T from "./typescript-declare";', options: [ 'always', { ts: 'never', tsx: 'never', js: 'never', jsx: 'never' }, @@ -616,7 +616,7 @@ describe('TypeScript', () => { ], invalid: [ test({ - code: 'import { T } from "./typescript-declare";', + code: 'import T from "./typescript-declare";', errors: ['Missing file extension for "./typescript-declare"'], options: [ 'always',