The future of TypeScript on ESLint:https://t.co/PTCWKWN22s
— ESLint (@geteslint) January 18, 2019
ESLint の TypeScript サポートの今後について、公式にアナウンスがありました。
要点をまとめると、
- TypeScript チームが TSLint から ESLint に切り替えていくと発表したよ。
- ESLint チームと TypeScript チームが協力して開発を進める場として、typescript-eslint プロジェクトを開始したよ。
- 既存の部品は新しいプロジェクトの 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
だと思う) に送ります。
私たちは、多くの 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 体験を確実にするために、このプロジェクトをサポートし続けます。
どのように変わるか
-
typescript-eslint-parser は破棄されます。
代わりに @typescript-eslint/parser を利用してください。 - TypeScript サポートがどのように行われるかに興味のある方は、typescript-eslint リポジトリをフォローしてください。
私たちは TypeScript コミュニティと ESLint コミュニティの協調を歓迎し、James と typescript-eslint チームがどのように ESLint を TypeScript コードの作成に最適な選択肢にしてくれるかを楽しみにしています。