Edited at

TypeScript on ESLint の未来

ESLintTypeScript サポートの今後について、公式にアナウンスがありました

要点をまとめると、


  1. TypeScript チームが TSLint から ESLint に切り替えていくと発表したよ。

  2. ESLint チームと TypeScript チームが協力して開発を進める場として、typescript-eslint プロジェクトを開始したよ。

  3. 既存の部品は新しいプロジェクトの org に移動するよ (typescript-eslint-parser@typescript-eslint/parser になる、等)。

という感じです。

以下は公式アナウンスの翻訳です。


数週間前、TypeScript チームは、ESLint を正式に採用し、ESLint に対する TypeScript の互換性を改善するための作業を説明したロードマップを共有しました。


Linting について


  • ESLint の検証ルール


    • TSLint と同等のこと

    • 性能と安定性



  • ESLint のエディタ統合機能

私たちが数ヶ月前に VS Code で行った調査で、ユーザーが Linting について不満に思っていることが分かりました。私たちのチームの一部は JavaScript の編集体験の改善に打ち込んでいる (訳注: TypeScript は JavaScript ファイル上での入力補完をサポートしている) ので、私たちのエディタ チームは TSLint と ESLint の両方をサポートするための作業を開始しました。しかし、TSLint には性能に関するアーキテクチャ上の問題があることに気がつきました。TSLint をより効率的に動作するよう修正するには、既存の検証ルールが動作しなくなるような API の変更が必要です。 (wotan が提供するような互換 API を提供しない限り)。

一方で、ESLint は既に効率的なアーキテクチャを有しています。さらに、さまざまなユーザー コミュニティが ESLint 用に構築された検証ルール (React Hooks や Vue など) を持っていますが、TSLint にはありません。

これらのことから、私たちのエディタ チームは (両方ではなく) ESLint を活用することに焦点を当てることにしました。 ESLint が現在サポートしていないシナリオ (例えば 意味論の検証や program-wide な検証) のために、ESLint の TypeScript サポートを TSLint と同等にするための貢献を進めます。これが実際にどのように機能するかの最初の試行として、TypeScript リポジトリで ESLint を利用し、作成した検証ルールを上流 (訳注: eslint-plugin-typescript だと思う) に送ります。

https://github.com/Microsoft/TypeScript/issues/29288


私たちは、多くの JavaScript および TypeScript コミュニティと同じように、この発表に非常に興奮しました。 ここ数年で、James Henry、Kai Cataldo、Kevin Partington、長島 徹 (訳注: ←私)、Nicholas Zakas など、ESLint チームの一部が TypeScript の互換性の向上に取り組んできました。その作業は、主に TypeScript 構文解析器である typescript-eslint-parser の開発でした。また、TypeScript 向けの追加ルール集である eslint-plugin-typescript は (ESLint チームがサポートしていた訳ではありませんが) 最近まで Nicholas と James によって保守されていました。これらが TypeScript-in-ESLint の話題の中心的存在として、適切に扱われることを確実にしたいと考えました。


typescript-eslint プロジェクトの発表

James Henry (ESLint の TypeScript サポート開発のリーダー) は typescript-eslint プロジェクトを開始しました。これは、今まで複数のリポジトリに分散して管理されていた TypeScript-in-ESLint 関連プロジェクト (訳注: typescript-estree, typescript-eslint-parser, and eslint-plugin-typescript) の包括的な開発拠点になります。

ESLint チームは正式には新しいプロジェクトに関与しませんが、私たちは James の努力を全面的に支持し、TypeScript 開発者にとって最高の ESLint 体験を確実にするために、このプロジェクトをサポートし続けます。


どのように変わるか



  1. typescript-eslint-parser は破棄されます。

    代わりに @typescript-eslint/parser を利用してください。

  2. TypeScript サポートがどのように行われるかに興味のある方は、typescript-eslint リポジトリをフォローしてください。

私たちは TypeScript コミュニティと ESLint コミュニティの協調を歓迎し、James と typescript-eslint チームがどのように ESLint を TypeScript コードの作成に最適な選択肢にしてくれるかを楽しみにしています。