Set Up TypeScript ESLint with Type-Aware Rules
Beginner10 minTrending
Configure ESLint with typescript-eslint for type-aware linting rules that catch bugs the compiler misses, including no-floating-promises and consistent-type-imports.
Prerequisites
- -TypeScript project with tsconfig.json
Steps
1
Install typescript-eslint
Add ESLint and typescript-eslint packages for flat config support.
$ pnpm add -D eslint @eslint/js typescript-eslint
2
Create eslint.config.mjs with type-aware rules
Set up a flat config that enables type-checked linting rules.
$ cat > eslint.config.mjs << 'EOF'
import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.strictTypeChecked,
...tseslint.configs.stylisticTypeChecked,
{
languageOptions: {
parserOptions: {
projectService: true,
tsconfigRootDir: import.meta.dirname,
},
},
},
{
rules: {
'@typescript-eslint/no-floating-promises': 'error',
'@typescript-eslint/consistent-type-imports': 'error',
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
},
},
{ ignores: ['dist/', 'node_modules/', '*.config.*'] },
);
EOF
Use strictTypeChecked for maximum safety. Fall back to recommendedTypeChecked if strict has too many errors initially.
3
Run the linter
Execute ESLint across all TypeScript files and review errors.
$ npx eslint . --max-warnings=0
4
Add a lint script and fix command
Add convenient npm scripts for linting.
$ npm pkg set scripts.lint='eslint .' scripts.lint:fix='eslint . --fix'
Full Script
FAQ
Discussion
Loading comments...