diff --git a/packages/eslint-plugin/src/rules/triple-slash-reference.ts b/packages/eslint-plugin/src/rules/triple-slash-reference.ts index 1bb16c229a1..08c3ad6291b 100644 --- a/packages/eslint-plugin/src/rules/triple-slash-reference.ts +++ b/packages/eslint-plugin/src/rules/triple-slash-reference.ts @@ -1,4 +1,5 @@ import { + AST_NODE_TYPES, AST_TOKEN_TYPES, TSESTree, } from '@typescript-eslint/experimental-utils'; @@ -81,9 +82,11 @@ export default util.createRule({ }, TSImportEqualsDeclaration(node): void { if (programNode) { - const source = (node.moduleReference as TSESTree.TSExternalModuleReference) - .expression as TSESTree.Literal; - hasMatchingReference(source); + const reference = node.moduleReference; + + if (reference.type === AST_NODE_TYPES.TSExternalModuleReference) { + hasMatchingReference(reference.expression as TSESTree.Literal); + } } }, Program(node): void { diff --git a/packages/eslint-plugin/tests/rules/triple-slash-reference.test.ts b/packages/eslint-plugin/tests/rules/triple-slash-reference.test.ts index ab10ba5f6d9..8dd71212fbb 100644 --- a/packages/eslint-plugin/tests/rules/triple-slash-reference.test.ts +++ b/packages/eslint-plugin/tests/rules/triple-slash-reference.test.ts @@ -54,6 +54,28 @@ ruleTester.run('triple-slash-reference', rule, { `, options: [{ path: 'always', types: 'always', lib: 'always' }], }, + { + code: ` + /// + /// + /// + import foo = foo; + import bar = bar; + import baz = baz; + `, + options: [{ path: 'always', types: 'always', lib: 'always' }], + }, + { + code: ` + /// + /// + /// + import foo = foo.foo; + import bar = bar.bar.bar.bar; + import baz = baz.baz; + `, + options: [{ path: 'always', types: 'always', lib: 'always' }], + }, { code: "import * as foo from 'foo';", options: [{ path: 'never' }],