世界を動かす技術を、日本語で。

TypeScript 7

概要

  • TypeScript 7 は、Goによる ネイティブ移植 で10倍高速化を実現
  • ビルドやエディタの応答性 が大幅に向上し、開発体験が刷新
  • マルチスレッド対応 と最適化により大規模プロジェクトも快適
  • TypeScript 6との互換運用 や新しい並列制御オプションを提供
  • 多数の 大手企業・OSSプロジェクト で実運用・高評価

TypeScript 7の登場と特徴

  • TypeScript 7 は、Goによる 完全ネイティブ移植

  • 従来比8~12倍 のビルド速度向上

  • 共有メモリ・マルチスレッド による並列処理対応

  • npm経由 で簡単導入:npm install -D typescript

  • エディタ連携 も高速化し、LSP対応で主要エディタが即サポート

    • 例:VS Codeは専用拡張機能で即利用可能
    • Visual Studioはワークスペースに応じて自動切替

高速化による開発体験の変化

  • エディタの プロジェクト読み込みが瞬時

  • find-all-references・補完・診断 など全体が高速化

  • tscコマンド(--watch含む) のフィードバックループが大幅短縮

  • OSSプロジェクトでの実測例

    • vscode: 125.7s → 10.6s(11.9倍)
    • sentry: 139.8s → 15.7s(8.9倍)
    • bluesky: 24.3s → 2.8s(8.7倍)
    • playwright: 12.8s → 1.47s(8.7倍)
    • tldraw: 11.2s → 1.46s(7.7倍)
  • ビルド時のメモリ使用量も削減 (例:vscodeは-18%)

本番運用と信頼性

  • 10年以上蓄積されたテスト とCIで全コミットを検証

  • Microsoft内外の大規模チーム で実運用・フィードバック獲得

    • VS Code, Loop, Office, PowerBI, Teams, Xbox等で検証
    • Bloomberg, Canva, Figma, Google, Lattice, Linear, Miro, Notion, Sentry, Slack, Vanta, Vercel, VoidZero等も協力
    • Slackでは 型チェック時間が7.5分→1.25分、マージキュー時間40%削減
    • Vantaでは 最大9倍高速化
    • Microsoft News Servicesでは CI待ち時間を月400時間削減
    • Canvaでは エディタ初回エラー表示が58秒→4.8秒
  • 言語サーバーのクラッシュ80%減少、失敗コマンド60%減少 など品質向上

TypeScript 6との併用とAPI互換性

  • TypeScript 7.0はAPIを未提供 (7.1で新API予定)

  • 6.0との併用のための互換パッケージ (@typescript/typescript6)を提供

    • tsc6, tscの両実行ファイルが利用可能
    • npmエイリアス機能で併用推奨
      • 例:npm install -D typescript@npm:@typescript/typescript6
      • 7.0はtypescript-7として追加可能

ナイトリービルドと導入方法

  • @typescript/native-preview でのナイトリー配布は今後 typescript@next に移行
  • 最新ビルド導入例:npm install -D typescript@next

並列化・カスタムスケーリング制御

  • TypeScript 7パース・型チェック・emit を並列化

  • --checkers, --builders フラグで並列ワーカー数を調整可能

  • --singleThreaded で並列化OFFも選択可能(デバッグや省リソース向け)

  • 型チェックは デフォルト4ワーカー、最大8ワーカーなど増減可能

    • ワーカー増加でさらなる高速化(例:vscodeで16.7倍)
    • マシン性能やメモリに応じて調整推奨
    • --checkers 1でシングルスレッド動作も可能

今後の展望

  • TypeScript 7.1 で新API提供予定
  • さらなる最適化やフィードバック反映が進行中
  • 大規模・高速なTypeScript開発基盤の進化継続

Hackerたちの意見

ここでの本当の話は、同時に二つの異なるコードベースを維持しながら、最も進んだ型システムを実現した素晴らしいチームのことだよね(やったー、ヒンドリー・ミルナー、心配しないで!)。チームに大きな祝福を!Rustのリライトが楽しみだな ;)

最も複雑かもしれないけど、「最も進んだ」とは言えないかな。そういうタイトルに対して「正しい」選択があるとは思わないけど、証明支援言語のどれかがもっと候補にふさわしいんじゃない?(TypeScriptの型システムを貶めるつもりは全くないよ。すごく面白い内容だから!)

Rustのリライトが意味あるかは疑問だな。Goはコーディングが速いから素晴らしい。TypeScriptをGoで1:1で再実装するのは、コードを見れば簡単だしね。一方でRustは開発に時間がかかると思う。RustはGoより20%速いかもしれないけど、TypeScriptとGoの組み合わせは十分良いと思う。RustはVSCodeの11倍のスピードアップに対して14倍になるかもしれないけど、Goはすでに大きな違いを生むには十分だよ。

人類が知る最も進んだ型システム(やったー、ヒンドリー・ミルナー、心配しないで!) このTypeScriptのリリースは主にパフォーマンスについてだよね。OCamlはまだ少なくとも2倍速いんじゃない?(とても大きなコードベースのインクリメンタルコンパイルではさらに速いかも?)

スティーブ・フランシア(Hugoや他のトップGoプロジェクトの著者)がエージェント時代におけるGoの適合についての考えを書いてるよ: https://spf13.com/p/go-the-agentic-language/

Goを選んだのは、Rust(や他の言語)をちゃんと考慮した結果だよ。理由は全部覚えてないけど、元のブログ記事には詳しく書いてあったはず。

「人類が知る中で最も高度な型システム」 正直な質問だけど、これってどういう意味?

かつて、型は努力する価値がないって議論してた人たちを覚えてる?TypeScriptが型を普及させることができたのが大好きだよ。

そんなことを真剣に議論してた人はいなかったと思う。ちょっと誇張してるかもしれないけど、間違ってるかも。でも、もし型に反対してた賢い人たちを挙げてくれたら、彼らは真剣じゃなかったって言うつもり。少なくとも中程度の複雑さを持つ型付きと型なしのコードベースで、少なくとも一人の協力者と一緒に働いた経験があれば、型なしの方が優れているとは真剣に思えないと思う(本当にひどい型付き言語を使わされた場合を除いてね)。その経験なしに型なし言語が良いって主張するのも真剣じゃないよ。正しい情報を持っていることを気にしないなら、誰でも何でも言えるからね。

dhhはまだあまり好きじゃないみたいだね。それぞれ好みがあるからね。

誰かがタイプを嫌ってるのは聞いたことないな。静的型付け、特に静的で明示的な型付けを嫌う人は多かったけど。例えば、Pythonが型なしだから使えないって言ってる人を何度も見たことがあるけど、それはおかしいよ。Pythonは強い型付けがされてるし、動的型付けでもあるからね。動的型付けは別の次元だよ。本当に型なしの言語もあるけど、一般的には「文字列型」って言われるものが多い。若い頃にAREXXをいじってたけど、あれはすべての値が文字列で、数字に見えてもそうだった。UnixのCLIツールの多く、例えばsedも、まあ、文字列型だと言えるかもね。でも、型についての「議論」のほとんどはPythonや似たような動的型付けの言語に関するものだったと思う。弱い型付けや型なしの言語が大きなプロジェクトに向いてるなんて言ってる人は聞いたことがないな。Pythonが動的型付けだから大きなプロジェクトには使えないって言ってる人はたくさんいたけど、それは間違った説明で、私たちが大きなプロジェクトを作るのに使ってるのに混乱させられたよ。

「型について議論してた頃、努力する価値がないって言ってたよね?」 > 「少なくとも、型を普及させるために役立ってるってことだよね。これはちょっと変わったJavaScript開発者の意見だな。」

Hacker Newsで議論の続きを見る