Palantir, the creators of TSLint, recently announced the deprecation of TSLint, putting their support behind typescript-eslint
to consolidate efforts behind one unified linting solution for TypeScript users.
Discussions between the TypeScript team, ESLint team, and TSLint team have been ongoing. In January the TypeScript team announced plans to adopt ESLint. TypeScript program manager Daniel Rossenwasser explains:
The most frequent theme we heard from users was that the linting experience left much to be desired. Since part of our team is dedicated to editing experiences in JavaScript, our editor team set out to add support for both TSLint and ESLint. However, we noticed that there were a few architectural issues with the way TSLint rules operate that impacted performance.
Upon hearing this news, the ESLint team announced the separation of TypeScript-specific ESLint efforts into a separate project to be led by Nrwl software engineer James Henry:
James Henry, who has long been the driving force behind TypeScript compatibility for ESLint, has started the
typescript-eslint
project as a centralized repository for all things related to TypeScript ESLint compatibility. This will be the new home of the TypeScript parser,eslint-plugin-typescript
, and any other utilities that will make the TypeScript ESLint experience as seamless as possible.
This separation will allow for ESLint compatibility, while maintaining a separate focus on TypeScript specific needs. As explained by the ESLint team:
While the ESLint team won’t be formally involved in the new project, we are fully supportive of James’ efforts and will be keeping lines of communication open to ensure the best ESLint experience for TypeScript developers.
The TSLint team at Palantir was very much aware of the compatibility challenges with ESLint and TSLint. After the TypeScript team explained the goal in their roadmap to help converge the TypeScript and JavaScript developer experience converge, Palantir’s TSLint team met with the TypeScript team to discuss the future of TypeScript linting and decided to back the efforts of typescript-eslint
Palantir's goals for supporting the TSLint community with a smooth transition to ESLint include:
- Support and documentation for authoring ESLint rules in TypeScript
- Testing infrastructure in typescript-eslint
- Semantic, type-checker-based rules
Once Palantir considers ESLint feature-complete, TSLint will get deprecated. Before that date, Palantir pledges to continue TSLint support for new TypeScript releases. Once compatibility is reached, plans include a TSLint to ESLint compatibility package to make ESLint work as a drop-in replacement for the TSLint rule set.
typescript-eslint is an open source monorepo for tooling to enable ESLint to support TypeScript and is available under the New BSD License and supported by the JS Foundation. Contributions are welcome via the typescript-eslint GitHub project.