📄 no-typescript-default-import¶
📊 Analysis Summary¶
| Metric | Count |
|---|---|
| 🔧 Functions | 1 |
| 📦 Imports | 2 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 packages/eslint-plugin-internal/src/rules/no-typescript-default-import.ts
📤 Default Export¶
| Property | Value |
|---|---|
name |
'no-typescript-default-import' |
meta.type |
'problem' |
meta.docs.description |
"Enforce that packages rules don't do import ts from 'typescript';" |
meta.fixable |
'code' |
meta.messages.noTSDefaultImport |
[ "Do not use the default import for typescript. Doing so will cause the package's type definitions to do the same.",... |
meta.schema |
[] |
defaultOptions |
[] |
Entry point: create — documented under Functions.
📦 Imports¶
| Name | Source |
|---|---|
TSESTree |
@typescript-eslint/utils |
createRule |
../util/index.js |
Functions¶
create(context: any): { 'ImportDeclaration > ImportDefaultSpecifier'?: undefined;…¶
Parameters:
contextany
Returns: { 'ImportDeclaration > ImportDefaultSpecifier'?: undefined; 'TSImportEqualsDeclaration > TSExternalModuleReference'?: undefined; } | { 'ImportDeclaration > ImportDefaultSpecifier'(node: TSESTree.ImportDefaultSpecifier): void; 'TSImportEqualsDeclaration > TSExternalModuleReference'(node: TSESTree.TSExternalModuleReference): void; }
Calls:
context.filename.endsWithcontext.reportfixer.replaceText
Internal Comments:
Code
create(context) {
if (context.filename.endsWith('mts')) {
// mts files will import "properly" and so default import is correct
return {};
}
return {
'ImportDeclaration > ImportDefaultSpecifier'(
node: TSESTree.ImportDefaultSpecifier,
): void {
const importStatement = node.parent;
if (importStatement.source.value === 'typescript') {
context.report({
node,
messageId: 'noTSDefaultImport',
fix(fixer) {
if (importStatement.specifiers.length === 1) {
return fixer.replaceText(node, '* as ts');
}
return null;
},
});
}
},
'TSImportEqualsDeclaration > TSExternalModuleReference'(
node: TSESTree.TSExternalModuleReference,
): void {
const parent = node.parent as TSESTree.TSImportEqualsDeclaration;
if (node.expression.value === 'typescript') {
context.report({
node,
messageId: 'noTSDefaultImport',
fix(fixer) {
return fixer.replaceText(
parent,
"import * as ts from 'typescript';",
);
},
});
}
},
};
}
Generated by Syntax Scribe