eslint-plugin-no-duplicate-declarations
v1.0.0
Published
ESLint plugin to detect duplicate declaration names across files in your TypeScript/JavaScript projects.
Maintainers
Readme
eslint-plugin-no-duplicate-declarations
ESLint plugin to detect duplicate declaration names across files in your TypeScript/JavaScript projects.
Installation
npm install eslint-plugin-no-duplicate-declarations --save-devUsage
Add to your eslint.config.mjs:
import { defineConfig } from 'eslint/config'
import noDuplicateDeclarations from 'eslint-plugin-no-duplicate-declarations'
import tsParser from '@typescript-eslint/parser'
export default defineConfig([
{
plugins: {
'no-duplicate-declarations': noDuplicateDeclarations,
},
languageOptions: {
parser: tsParser,
ecmaVersion: 2021,
sourceType: 'module',
},
rules: {
'no-duplicate-declarations/no-duplicate-declarations': 'error',
},
},
])Configuration Options
You can configure which declaration types to check:
Check Only Specific Types
"no-duplicate-declarations/no-duplicate-declarations": ["error", {
checkTypes: ["class", "interface", "type"]
}]Ignore Specific Types
"no-duplicate-declarations/no-duplicate-declarations": ["error", {
ignoreTypes: ["variable", "function"]
}]Available Declaration Types
class: Class declarations and expressionsinterface: TypeScript interfacestype: TypeScript type aliasesenum: TypeScript enumsfunction: Function declarationsvariable: Variable declarations (const, let, var)namespace: TypeScript namespacesmodule: TypeScript modules
Preset Configurations
This plugin includes some preset configurations:
Default (All Types)
{
extends: ["plugin:no-duplicate-declarations/recommended"]
}Classes Only
{
extends: ["plugin:no-duplicate-declarations/classesOnly"]
}Types and Interfaces Only
{
extends: ["plugin:no-duplicate-declarations/typesInterfaces"]
}Example
// file1.ts
interface User {
/* ... */
}
// file2.ts
interface User {
/* ... */
} // Error: Duplicate interface name 'User' also defined in file1.ts at line 1License
MIT
