Also available in English.
En ajoutant ESLint à un projet qui utilise TypeScript 7 ("typescript": "^7.0.2"), npm install --save-dev eslint typescript-eslint @eslint/js échoue :
npm error ERESOLVE unable to resolve dependency tree
npm error Found: typescript@7.0.2
npm error Could not resolve dependency:
npm error peer typescript@">=4.8.4 <6.1.0" from typescript-eslint@8.71.2
Avec --legacy-peer-deps lâinstallation passe, mais eslint . sâarrĂȘte tout de suite :
Error: typescript-eslint does not support TS 7.0.
Ce nâest pas un warning. Les trois points dâentrĂ©e (typescript-eslint, @typescript-eslint/eslint-plugin et @typescript-eslint/parser) contiennent un if (versionMajor >= 7) qui lĂšve une exception dĂšs lâimport, avant quâune rĂšgle ne sâexĂ©cute. typescript-eslint fait un require("typescript") pour utiliser lâAPI JS du compilateur, et TypeScript 7.0 est livrĂ© sans cette API.
Ce qui marche
Le billet dâannonce de TypeScript 7 explique comment faire cohabiter TypeScript 7 avec le paquet @typescript/typescript6 pour les outils qui ont encore besoin de lâAPI. Avec npm, ça passe par un alias du nom typescript lui-mĂȘme, et un second alias pour garder TypeScript 7 cĂŽtĂ© tsc :
"devDependencies": {
"typescript": "npm:@typescript/typescript6@^6.0.2",
"@typescript/native": "npm:typescript@^7.0.2",
"eslint": "^10.13.0",
"typescript-eslint": "^8.71.2",
"@eslint/js": "^10.0.1"
}require("typescript") rĂ©sout alors vers la 6.0.2 et npx tsc --version affiche toujours 7.0.2. Lâinstallation se fait sans --legacy-peer-deps et npm ls typescript --all ne montre plus de invalid.
Dans mon projet, tsc --noEmit reste propre, les tests Vitest passent, et les rĂšgles qui demandent le typechecker (recommendedTypeChecked) fonctionnent aussi.
Ce qui ne marche pas
Mon premier rĂ©flexe a Ă©tĂ© un overrides npm limitĂ© aux paquets typescript-eslint, avec "typescript": "^6.0.0". Avec --legacy-peer-deps, npm ne crĂ©e pas de copie imbriquĂ©e. Il garde un seul typescript@7.0.2 Ă la racine et le marque invalid partout. Sans le flag, lâinstallation sâarrĂȘte sur un ERESOLVE, parce que npm compare le typescript de la racine au peer réécrit par lâoverride.
Un alias sous un autre nom ("typescript-6": "npm:typescript@^6.0.0") ne change rien non plus. typescript-eslint fait require("typescript") en littĂ©ral, il ne regarde jamais un paquet qui sâappelle autrement.
Support natif
Lâissue typescript-eslint#10940 suit le support de TypeScript 7. Elle est ouverte et verrouillĂ©e. Fin septembre 2026, un mainteneur y annonce une PR prĂȘte pour relecture interne pour un support natif avec TypeScript 7.1. Cette note devrait donc devenir inutile Ă ce moment-lĂ .
Testé avec Node 26.5.0, npm 12.2.0, TypeScript 7.0.2 et typescript-eslint 8.71.2.