TypeScript 7は、TypeScriptのコンパイラーをGoで書き直し、ネイティブのプログラムとして提供するものです。言語は同じで、コマンドは今も tsc、npmパッケージも typescript のままです。変わるのは速度(フルビルドが約10倍速い)、いくつかの新しいデフォルト、そしてTypeScript 6で非推奨になったオプションの削除です。TypeScript 7.0は2026年7月8日にリリースされ、npmのバージョンは7.0.2です。
npm install --save-dev typescript@latest
npx tsc --version
Version 7.0.2
型レベルで目に見える数少ない違いのひとつが、テンプレートリテラル型による文字列の分割です。JavaScriptは文字列をUTF-16のコード単位で保持しており、😀のような絵文字は2つのコード単位を使います。
TypeScript 6はテンプレートリテラル型を text[0] と同じくコード単位で分割していました。TypeScript 7は [...text] と同じくコードポイント単位で分割するため、絵文字は1文字のまま残ります。
type HeadTail<S> = S extends `${infer Head}${infer Tail}` ? [Head, Tail] : never;
type Result = HeadTail<"😀abc">;
// TypeScript 7: ["😀", "abc"]
// TypeScript 6: ["\ud83d", "\ude00abc"]
TypeScriptがGoで書き直された理由
バージョン6までのTypeScriptコンパイラーは、それ自体がTypeScriptで書かれ、Node.js上で動いていました。大きなコードベースでは、ビルドが遅く、エディターの起動も遅く、メモリも多く使っていました。
Anders Hejlsbergは2025年3月11日、「A 10x Faster TypeScript」という記事でネイティブ移植を発表しました。新しいコードベースのコードネームはCorsa、JavaScriptのほうはStradaです。チームは型チェッカーを設計し直すのではなく既存のコンパイラーのコードを移植したので、新しいコンパイラーは同じルールに従い、同じエラーを報告します。TypeScript 6.0(2026年3月)はJavaScriptのコードベースの最後のリリースで、橋渡しの役割を果たしました。TypeScript 7で削除されるものをすべて非推奨にしたのです。そして2026年7月8日にTypeScript 7.0がリリースされました。
TypeScript 7はどれくらい速いか
7.0のリリース時に公開された、オープンソースプロジェクトのフルビルドの結果です。
| プロジェクト | TypeScript 6 | TypeScript 7 | 高速化 | メモリ |
|---|---|---|---|---|
| VS Code | 125.7 s | 10.6 s | 11.9x | 5.2 GB → 4.2 GB |
| Sentry | 139.8 s | 15.7 s | 8.9x | 4.9 GB → 4.6 GB |
| Bluesky | 24.3 s | 2.8 s | 8.7x | 1.8 GB → 1.3 GB |
| Playwright | 12.8 s | 1.47 s | 8.7x | 1.0 GB → 0.9 GB |
| tldraw | 11.2 s | 1.46 s | 7.7x | 0.6 GB → 0.5 GB |
これらの計測では、デフォルトの4つの型チェックワーカーが使われています。同じマシンで --checkers 8 を指定すると、メモリは増えるものの、VS Codeのビルドは7.51 s(16.7x)、tldrawは1.06 s(10.6x)になりました。
エディターも同じくらい速くなります。言語サービスはネイティブの言語サーバーとして動くようになり、VS Codeのコードベースでは、エディターを開いてからファイル内の最初のエラーが表示されるまでの時間が約17.5秒から1.3秒未満になりました。この高速化が最も効くのは、大きなコードベースでのモノレポ、CIパイプライン、エディターです。
変わらないもの
- コマンドとパッケージ。
npm install --save-dev typescriptとnpx tscです。インストール時に、npmは@typescript/typescript-linux-x64のようなオプショナルな依存関係からプラットフォームに合ったビルド済みバイナリを選ぶので、ほかに準備することはありません。 - 言語。 構文も、型システムも、エラーコードも同じです。
- 結果。 リリースノートには、
stableTypeOrderingフラグを有効にし、ignoreDeprecationsの設定なしでTypeScript 6.0でエラーなくコンパイルできるコードは、実質的にすべてTypeScript 7.0でも同じようにコンパイルされるはずだと書かれています。
新しいデフォルト
以下のデフォルトはTypeScript 6.0で変わり、TypeScript 7でもそのままです。影響するのは、tsconfig.json で設定していないオプションだけです。
| オプション | 新しいデフォルト | 古いデフォルトに頼っていた場合の影響 |
|---|---|---|
strict | true | strict を設定していなかったプロジェクトでも、strictなnullチェック、noImplicitAny などが有効になる |
target | es2025(esnext の直前の最新バージョン) | 古いtargetを設定しない限り、出力にモダンな構文が残る |
module | esnext | nodenext や commonjs を設定しない限り、ESモジュールが出力される |
types | [] | インストールした @types パッケージが自動で読み込まれなくなる。"types": ["node"] を加える(["*"] で以前の動作に戻る) |
rootDir | ./(tsconfig.json があるフォルダー) | outDir を設定してソースが src にある場合、"rootDir": "./src" を設定するまで error TS5011 になる |
noUncheckedSideEffectImports | true | import "./styles.css" のような副作用importにはモジュール宣言(declare module "*.css";)が必要。通常はフレームワークの型パッケージが提供する |
stableTypeOrdering | 常に有効で、無効にできない | 型は毎回同じ順序に並ぶので、エラーメッセージや .d.ts の出力がチェックの順序に左右されない |
削除されたオプションと構文
TypeScript 6で非推奨になったオプションは、TypeScript 7ではエラーになります。
target: es5と、ES5の出力のためだけにあったdownlevelIteration。moduleResolution: node(node10とも呼ばれる)とclassic。nodenextかbundlerを使います。module: amd、umd、system、none。baseUrl(pathsをtsconfigファイルからの相対パスで書く)とoutFile(バンドラーを使う)。esModuleInterop: false、allowSyntheticDefaultImports: false、alwaysStrict: false。この3つは常に有効です。
何を削除すればよいかはコンパイラーが正確に教えてくれます。
error TS5102: Option 'baseUrl' has been removed. Please remove it from your configuration.
error TS5108: Option 'moduleResolution=node10' has been removed. Please remove it from your configuration.
古い構文も2つエラーになります。namespaceを表す module Foo { }(namespace Foo { } と書きます。パッケージを表す declare module "foo" は影響を受けません)と、import assertion(assert { type: "json" } は with { type: "json" } になります)です。
index.ts(2,8): error TS1540: A 'namespace' declaration should not be declared using the 'module' keyword. Please use the 'namespace' keyword instead.
2行目の module を namespace に変えれば直り、プログラムは 4 と表示します。
コマンドラインでは、tsconfig.json があるフォルダーで tsc file.ts を実行すると、設定を黙って無視するのではなく error TS5112 で停止するようになりました。tsc だけを実行するか、--ignoreConfig を渡してください。JSDocでチェックするJavaScriptファイルでは、TypeScript 7は型をTypeScriptに近い形で読むようになりました。@enum は認識されなくなり、値を型として使うには typeof が必要です。削除された各オプションの代わりは、tsconfigのページに載せています。
まだTypeScript 6が必要なツール
TypeScript 7.0には安定したJavaScript APIがありません。require("typescript") はバージョン情報(version と versionMajorMinor)しか返さず、ほかのツールが呼び出すコンパイラーの関数(createProgram、言語サービス)は存在しません。パッケージの typescript/unstable/* エントリーポイントは実験的なもので、代わりにはなりません。リリースノートによると、チームはTypeScript 7.1で新しい別のAPIを提供する予定です。それまでは、コンパイラーをライブラリとしてimportするものはすべてTypeScript 6を使い続けます。
- typescript-eslint(型情報を使うlintルール)
- Vue、Svelte、Astroのファイル向けの言語ツール、Angularのテンプレート型チェック、MDX
- ts-node(TypeScript 7がインストールされていると起動時にクラッシュする)
これらのために、TypeScriptは互換パッケージ @typescript/typescript6 を提供しています。完全なAPIを備えたTypeScript 6と tsc6 コマンドがインストールされます。npmのエイリアスを使えば、1つのプロジェクトに両方を入れられます。ビルドはTypeScript 7が行い、typescript をimportするツールにはバージョン6が渡ります。
{
"devDependencies": {
"@typescript/native": "npm:typescript@^7.0.2",
"typescript": "npm:@typescript/typescript6@^6.0.2"
}
}
npm install のあとは次のようになります。
$ npx tsc --version
Version 7.0.2
$ npx tsc6 --version
Version 6.0.3
これらのツールを使っていなければ、普通の typescript をインストールするだけでよく、この設定は不要です。
新しいコマンドラインオプション
ネイティブコンパイラーは、パース、チェック、出力を並列に行います。それを制御する新しいフラグが3つあり、リリースノートでは --checkers と --builders は実験的とされています。
| フラグ | 役割 |
|---|---|
--checkers N | プロジェクトごとの型チェックワーカーの数(デフォルトは4)。コア数の多いマシンでは増やすと効果があることがあり、そのぶんメモリを使う。小さなCIランナーには少なめが向いている。 |
--builders N | プロジェクト参照の --build で同時にビルドするプロジェクトの数。--checkers と掛け算になり、4 builderと4 checkerなら16個のcheckerが同時に動くことがある。 |
--singleThreaded | 並列処理をすべて無効にする。デバッグやメモリの制限が厳しい場合に使う。 |
--watch も、Parcelバンドラーのファイルウォッチャーを移植したGo版で書き直されました。
エディターのサポート
VS Code向けには、TypeScriptチームが専用のTypeScript 7拡張機能を公開しています。インストールするとそれがデフォルトになり、コマンドパレットの「Disable TypeScript 7 Language Server」でTypeScript 6に戻せます。最新のVisual Studioはワークスペースに応じてTypeScript 7を自動で有効にし、ほかのエディター(Neovim、Zed、Sublime Text、Emacs)はLanguage Server Protocolで接続します。Vue、Svelte、Astro、MDXのファイルやAngularのテンプレートを使うプロジェクトは、それらのツールが使えるAPIをTypeScript 7が公開するまで、TypeScript 6ベースのエディターサポートを使い続けます。Angularのプロジェクトでも、プロジェクト全体の高速なチェックにはTypeScript 7の tsc を使えます。
TypeScript 7へのアップグレード方法
- まずTypeScript 6にアップグレードする(5.xを使っている場合):
npm install --save-dev typescript@6。報告される非推奨エラーは、"ignoreDeprecations": "6.0"で黙らせるのではなく、すべて修正します。 - TypeScript 6で
"stableTypeOrdering": trueを有効にし、それによって変わる部分を修正します。チームが7でも同じようにコンパイルされると明言しているのはこの設定です。 - デフォルトが変わったオプションを設定する(古い値に依存していた場合)。たとえば
"types": ["node"]や"rootDir": "./src"です。 - TypeScript 7をインストールする:
npm install --save-dev typescript@latest。その後、stableTypeOrderingは削除してもかまいません。7では常に有効です。 - ツールを確認する。 typescript-eslint、ts-node、テンプレートの型チェックがあるフレームワークを使っているなら、上で示したTypeScript 6のエイリアスを設定します。
npx tsc --versionでバージョンを確認し、CIが更新したロックファイルからインストールしていることを確かめます。
tsgoとプレビュー版
リリース前、ネイティブコンパイラーは @typescript/native-preview として公開されていて、JavaScript版の tsc と並べて試せるよう、コマンド名は tsgo でした。2025年から2026年初めの記事では tsgo と書かれています。7.0でその名前は普段使われなくなりました。ネイティブコンパイラーは tsc になり、ナイトリービルドは typescript@next(現在は7.1の開発版)として公開されています。
よくある質問
TypeScript 7とは何ですか?
TypeScript 7は、TypeScriptのコンパイラーをGoで書き直し、Node.js上のJavaScriptとして動かすのではなくネイティブのプログラムとしてコンパイルした最初のリリースです。同じ言語を同じ tsc コマンドで型チェックし、リリースノートによると、フルビルドはTypeScript 6より通常8倍から12倍速くなっています。2026年7月8日にリリースされました。
TypeScript 7はGoで書かれていますか?
はい。コンパイラーと言語サービスはTypeScriptからGoに移植されました(このプロジェクトのコードネームはCorsa、JavaScriptのコードベースはStradaです)。インストールは今までどおりnpmの typescript パッケージからで、npmがOSとCPUに合ったビルド済みのネイティブバイナリを選びます。
TypeScript 7のためにコードを変更する必要はありますか?
コードはたいてい変更不要ですが、設定は変更が必要なことがあります。TypeScript 7では6.0で非推奨になったオプション(target: es5、moduleResolution: node、baseUrl、outFile など)が削除され、strict: true や types: [] などのデフォルトが変わりました。stableTypeOrdering を有効にし、ignoreDeprecations なしでTypeScript 6.0でエラーなくコンパイルできるコードは、同じようにコンパイルされるはずです。
tsgoとは何ですか?
tsgo は、7.0のリリース前にnpmパッケージ @typescript/native-preview として公開されていたネイティブコンパイラーのプレビュー版のコマンド名です。TypeScript 7では、ネイティブコンパイラーは単に typescript パッケージの tsc になり、ナイトリービルドは typescript@next で提供されます。
typescript-eslintはTypeScript 7で動きますか?
直接は動きません。TypeScript 7.0には安定したJavaScript APIがなく、typescript-eslint、ts-node、Vue、Svelte、AngularのテンプレートチェッカーなどのツールはそのAPIを呼び出しているからです。それらのためには @typescript/typescript6 パッケージ(npmのエイリアス)でTypeScript 6を残しておき、ビルドにはTypeScript 7の tsc を使います。TypeScriptチームは、TypeScript 7.1で新しい別のAPIを提供する予定だとしています。