TypeScript 7(TS7)は、コンパイラtscと言語サービスをGo言語で書き直したネイティブ版のTypeScriptです。正式版の7.0は2026年7月8日に公開され、npmで入る版は7.0.2です。2026年10月31日時点では次の7.1がbeta(10月20日公開)で、安定版は11月24日の予定になっています。
文法はほぼ6.0のままで、変わるのは「型チェックの速さ」「tsconfigの既定値と削除された設定」「プログラムから呼ぶAPI」の3点です。この記事では、手元で5.9.3・6.0.3・7.0.2・7.1.0-betaを並べて測った結果をもとに、移行で詰まる箇所とその直し方をまとめます。
まとめ:TypeScript 7で押さえる5点
- 正式版は7.0.2:2026年7月8日公開。
npm install -D typescriptで入り、コマンドは従来どおりtsc。プレビュー期のtsgo(@typescript/native-preview)は7月7日版で更新が止まっています。 - 速さ:公式の計測では6.0比で7.7〜11.9倍。手元のdate-fns(1,229ファイル)では中央値2.71秒→0.42秒(約6.5倍)、最大メモリの中央値は313MB→164MBでした。
- tsconfig:
strict・types・rootDirなどの既定値は6.0の変更を引き継ぎ、6.0で非推奨だったbaseUrlやtarget: es5は7.0でエラーになります。ignoreDeprecationsでは消せません。 - APIが無い:7.0の
require("typescript")は版番号しか返しません。typescript-eslint・Angular・Vue・Svelte・Astroは、当面6.0の互換パッケージ@typescript/typescript6と併用します。 - 7.1:新しいAPI(
typescript/syncなど)と、.vueなどを型チェックに載せるcontent mapperが入ります。エディタやツールの都合で7.0を見送っている場合は7.1の安定版を待つ判断が妥当です。
TypeScript 7の実装|Project Corsaによるコンパイラと言語サービスのGo移植
TypeScript 6.0までのコンパイラはTypeScript自身で書かれ、Node.js上で動いていました。Microsoftは2025年3月にGoへのネイティブ移植(コードネームProject Corsa)を発表し、旧実装(コードネームStrada)の構造をファイル単位でGoへ写す方針で進めました。型チェックの規則を作り直したのではなく、実装言語を入れ替えた移植です。
6.0でstableTypeOrderingを有効にし、ignoreDeprecationsを使わずに通るコードは、原則として7.0でも同じ結果になるよう作られています。ただし、テンプレートリテラル型のUnicode処理やJavaScriptの解析には変更があります。速くなるのはコンパイルと型チェック、エディタの補完やエラー表示で、TypeScriptが出力するJavaScriptの実行速度は変わりません。
6.0は「JavaScript実装として最後のメジャー版」と位置づけられ、7.0で削除する設定に非推奨警告を出す役割を担いました。6.0の変更点そのものはTypeScript 6.0とは|5から6への移行手順とts5to6・7.0との違いで詳しく扱っています。
TypeScript 7のリリース状況|7.0.2正式版から7.1 betaまで
「ts7 いつ」に答えるため、npmの公開日時(UTC)で時系列を並べます。7.0.0という版はnpmに無く、RCが7.0.1-rc、正式版の初出が7.0.2です。
| 段階 | npmの版 | 公開日 | 入れ方 |
|---|---|---|---|
| Beta | native-preview | 2026-04-21 | @typescript/native-preview |
| RC | 7.0.1-rc | 2026-06-18 | typescript@rc |
| 正式版 | 7.0.2 | 2026-07-08 | typescript(latest) |
| 7.1 beta | 7.1.0-beta | 2026-10-20 | typescript@beta |
| 7.1 安定版 | 未公開 | 2026-11-24予定 | — |
| nightly | 7.1.0-dev.日付 | 毎日 | typescript@next |
7.1安定版の日付は7.1のIteration Plan(microsoft/TypeScript #63703)にある予定日で、確定ではありません。7.0の正式版の発表では、今後は3〜4か月ごとに機能追加の版を出す方針が示されています。
7.1 betaの追加機能|新API・content mapper・ES2026対応
7.1 betaの発表によると、主な追加は次のとおりです。
- プログラムから使うAPI:
typescript/sync・typescript/async・typescript/fs・typescript/astなどのサブパスで公開 - content mapper:
.vueのようなファイルをTypeScriptとして見せるプラグインの仕組み。tsconfigに登録し、--runExternalCodeを付けて実行 --target es2026と--lib es2026(Math.sumPrecise()・Array.fromAsync()など)- ambient moduleでのimport attributes(
with { type: "css" }で型を分ける)とsource phase imports
一方で、DOMの型定義(lib.d.ts)の生成方法の変更と、分配条件型の型パラメータに対するチェックの強化があり、7.0で通っていたコードが7.1でエラーになる場合があります。7.1へ上げるときは、7.0と同じ手順でCIの型チェックを先に回してください。
tsgoとtscの違い|native-previewから正式版のtscへ
tsgoは、プレビュー期に@typescript/native-previewパッケージが提供していたコマンド名です。中身は7.0と同じGo実装で、旧来のJavaScript版tscと並べて試せるよう別名にしていました。RC以降は通常のtypescriptパッケージに入るtscそのものがGo実装になったため、正式版ではtsgoを使う理由はありません。
| 項目 | tsgo | tsc(7.0.2) |
|---|---|---|
| パッケージ | @typescript/native-preview |
typescript |
| npmの最終版 | 7.0.0-dev.20260707.2 | 7.0.2(latest) |
| 位置づけ | プレビュー(更新停止) | 正式版 |
| nightlyの入手先 | — | typescript@next |
package.jsonのscriptsやCIにtsgoが残っている場合は、@typescript/native-previewを外してtypescript@7を入れ、コマンドをtscへ戻します。毎日の開発版を試したいときはtypescript@nextを使います。
エディタ側は、VS Codeの拡張「TypeScript 7」(拡張ID TypeScriptTeam.native-preview)が7の言語サーバーを提供します。7.0の発表では導入すると既定で有効になると説明されていますが、Marketplaceの手順はコマンドパレットの「TypeScript: Enable TypeScript 7」での有効化を案内しています。有効になっていなければこのコマンドを実行し、6.0の言語サービスへ戻すときは「Disable TypeScript 7 Language Server」を使います。設定キーはjs/ts.experimental.useTsgoです。なお、tsconfigのcompilerOptions.pluginsで入れたtsserverプラグインは7の言語サーバーでは読み込まれず、警告も出ません(CSS Modulesとは?Next.js・TypeScriptでの導入と型安全化の設定を解説で扱っているtypescript-plugin-css-modulesが典型です)。
TypeScript 7はどれくらい速いか|公式ベンチと手元の実測
公式の計測(6.0と7.0のフルビルド)
7.0の発表に載っている、実在のOSSでの比較です。
| プロジェクト | 6.0 | 7.0 | 倍率 | メモリ |
|---|---|---|---|---|
| vscode | 125.7秒 | 10.6秒 | 11.9倍 | 5.2GB→4.2GB |
| sentry | 139.8秒 | 15.7秒 | 8.9倍 | 4.9GB→4.6GB |
| bluesky | 24.3秒 | 2.8秒 | 8.7倍 | 1.8GB→1.3GB |
| playwright | 12.8秒 | 1.47秒 | 8.7倍 | 1.0GB→0.9GB |
| tldraw | 11.2秒 | 1.46秒 | 7.7倍 | 0.6GB→0.5GB |
「約10倍」はこの7.7〜11.9倍を丸めた数字です。メモリの削減は6〜26%で、時間ほどは縮みません。
date-fnsで測った5.9・6.0・7.0・7.1の比較
公式の表は大規模プロジェクトの値なので、中規模のライブラリでも同じ傾向が出るかを確かめました。date-fns(2026年10月31日取得、コミットa9739fb3e5384a810e90d7376446f6d84ecc5029)のpkgs/core/srcから、テストとTemporal関連を除いた1,229ファイルを--noEmitで型チェックし、各版3回の実時間と最大メモリを取りました(macOS・Intel Core i9-9880H 8コア16スレッド・Node.js v26.5.0)。
| 版 | 実時間(3回) | 最大メモリ |
|---|---|---|
| 5.9.3 | 2.68〜2.69秒 | 305〜313MB |
| 6.0.3 | 2.67〜2.75秒 | 311〜314MB |
| 7.0.2 | 0.40〜0.50秒 | 163〜166MB |
| 7.1.0-beta | 0.39〜0.40秒 | 127〜133MB |
測定方法:除外したのはtest.ts・*.test.ts・test/配下・*.tp.ts・tp/配下・benchmark.ts・*.bench.tsで、設定はtarget: "es2022"・moduleResolution: "bundler"・lib: ["es2022", "dom"]・strict: true・skipLibCheck: true・types: []です。各版とも/usr/bin/time -l tsc -p tsconfig.bench.jsonで実時間(real)と最大常駐メモリ(maximum resident set size)を読み、3回の中央値で比べています。
6.0→7.0で約6.5倍(中央値2.71秒→0.42秒)、メモリはほぼ半分でした。公式の7.7〜11.9倍より低い結果ですが、対象コードや測定環境が異なるため、この測定だけでは倍率の差の原因を特定できません。--extendedDiagnosticsで型チェック部分だけを見ると、6.0.3の1.70秒に対して7.0.2は0.120秒でした。今回の3回測定では5.9と6.0の実時間はほぼ同じで、6.0への更新による高速化は確認できませんでした。7.1 betaは時間がほぼ同じで、メモリがさらに2割ほど減っています。
–checkers・–builders・–singleThreadedの使い分け
7.0のtscは型チェックを複数のチェッカーで並列に回し、既定のチェッカー数は4です。--checkersで数を変えられ、--buildでプロジェクト参照を使う場合は--buildersで同時にビルドするプロジェクト数を指定します。この2つは掛け算で効くため、両方を大きくするとCPUとメモリを一気に使います。
上のdate-fnsで--checkersを変えると、1で0.70秒、4(既定)で0.41秒、8で0.38秒でした。この規模では4を超えて増やしてもほとんど縮みません。公式の発表ではvscodeを--checkers 8にして16.7倍になった例が示されており、効くのはファイル数の多いプロジェクトです。CIのランナーがメモリの少ない共有マシンなら、--singleThreadedで並列化を止めるか、--checkers 2程度に絞り、実際のCI環境でメモリ使用量と完走可否を確認します。
TypeScript 7の破壊的変更とtsconfig|既定値の変更と削除された設定
6.0から引き継いだ既定値の変更
7.0は主な既定値を6.0から引き継ぎますが、stableTypeOrderingがtrueに固定され無効にできない点が異なります。5.xから直接7へ上げる場合は、6.0で変わった既定値をまとめて受けることになります。主なものは次のとおりです(TypeScript 6.0のリリースノート)。
strictがtrue:暗黙のanyなどがエラーになるtypesが[]:@types/nodeを入れていても自動では読み込まれないrootDirがtsconfig.jsonのあるディレクトリ:src配下のファイルの出力先がずれるmoduleがesnext、targetが最新の安定版ECMAScript
5.9でエラー0件の小さなプロジェクトで、影響の出方を確かめました。src/index.tsに引数の型を書いていない関数とprocess.envを参照する1行を置き、事前に@types/nodeをインストールし、tsconfigのcompilerOptionsはoutDirだけを指定しています。
// tsconfig.json
{ "compilerOptions": { "outDir": "dist" }, "include": ["src"] }
// src/index.ts
export function greet(name) { return "hi " + name; }
console.log(process.env.HOME);
| tsconfigの状態 | 5.9.3 | 6.0.3・7.0.2 |
|---|---|---|
| outDirのみ | エラー0・dist/index.js | TS5011・dist/src/index.js |
rootDir: "src" を追加 |
— | TS2591・TS7006 |
types: ["node"] も追加 |
— | TS7006 |
注意したいのは1行目です。6.0.3と7.0.2は設定エラーのTS5011だけを表示し、ソースの型エラーはまだ出しません。しかも出力は止まらず、dist/src/index.jsという5.9とは違う場所に書き出されます。node dist/index.jsで起動している本番構成なら、ビルドが「エラーはあるが成果物はある」状態で古いファイルを動かし続けることになります。
直し方は、rootDirを明示し、使う型パッケージをtypesに並べ、残った暗黙のanyに型を付けることです。"strict": falseで一時的に戻すこともできますが、消えるのはTS7006だけで、TS5011とTS2591は残ります。
{
"compilerOptions": {
"outDir": "dist",
"rootDir": "src",
"types": ["node"]
},
"include": ["src"]
}
7.0でエラーになった設定と置き換え先
6.0で非推奨だった設定は、7.0ではすべてエラーになります。6.0では"ignoreDeprecations": "6.0"で警告を止められましたが、7.0では効きません。
| 設定 | 7.0の扱い | 置き換え |
|---|---|---|
| baseUrl | TS5102(削除) | paths に "*": ["./src/*"] |
| moduleResolution: node・node10・classic | TS5108 | bundler か nodenext |
| target: es5 | TS5108 | es2015以上(下位変換は別ツール) |
| module: amd・umd・system・none | TS5108(noneはTS6046) | esnext・nodenext |
| outFile | 削除 | バンドラで1ファイル化 |
| esModuleInterop: false | falseにできない | 設定を消す |
baseUrlの消し方と、baseUrl経由で解決していたbare importの扱いはtsconfigのbaseUrl非推奨(TS5101)の直し方とignoreDeprecations・TypeScript 7.0の削除エラーに、モジュール関連の削除設定はTypeScriptのモジュールとクラスの違い|export/importの書き分けと7.0の変更点にまとめています。
もう1つ、CIで終了コードを見ている場合の注意です。型エラーを1件含むプロジェクトをtsc --noEmitで実行したときの終了コードは、5.9.3・6.0.3・7.1.0-betaが2なのに対し、7.0.2は1でした(出力ありのビルドでは7.0.2も2)。0かどうかだけを判定するCIには影響しませんが、終了コード2を条件に分岐しているスクリプトは7.0.2で素通りします。
TypeScript 7.0で従来のCompiler APIが使えない影響|typescript-eslintとの併用設定
7.0のtypescriptパッケージは、従来のコンパイラAPIを持っていません。7.0.2でrequire("typescript")が返すのはversionとversionMajorMinorの2つだけで、ts.createProgram(...)を呼ぶとTypeError: ts.createProgram is not a functionになります。実験的なAPIはtypescript/unstable/syncなどのサブパスにありますが、6.0のAPIとは別物で、7.1 betaではtypescript/syncへ名前が変わっています。Compiler APIを直接使うコードの移行はTypeScript Compiler APIとは|AST解析と型情報取得の手順とTypeScript 7対応で扱っています。
影響が大きいのは型情報を使うLintです。typescript-eslint 8.72.1のpeerDependenciesはtypescript >=4.8.4 <6.1.0で、npm i -D [email protected] typescript-eslint eslintはnpm 11でERESOLVEになり、インストール自体が止まります。対応はtypescript-eslintのissue #10940で進行中で、2026年10月31日時点ではOpenです。
公式の発表が示している回避策は、6.0のAPIを持つ互換パッケージ@typescript/typescript6をtypescriptという名前で入れ、7.0は別名で入れる構成です。
{
"devDependencies": {
"@typescript/native": "npm:typescript@^7.0.2",
"typescript": "npm:@typescript/typescript6@^6.0.2",
"typescript-eslint": "^8.72.1",
"eslint": "^9"
}
}
この構成でnpm installするとERESOLVEは出ず、npx tsc --versionは7.0.2、npx tsc6 --versionは6.0.3、require("typescript").versionは6.0.3を返しました。型情報が要る@typescript-eslint/no-floating-promisesも、awaitしていないPromiseを検出しています。型チェックとビルドは速い7.0のtsc、Lintとツール連携は6.0のAPI、という分担です。ESLint自体の設定はESLintをVSCodeで使う設定手順|ESLint 10のflat configと保存時の自動修正を参照してください。
フレームワーク別のTypeScript 7対応|Next.js・Vue/Nuxt・Angular・Svelte
判断の基準は、そのツールがtscコマンドを呼ぶだけなのか、TypeScriptのAPIや言語サービスに組み込まれているのかです。前者は7.0でそのまま速くなり、後者は6.0が必要です。2026年10月31日時点のnpmの最新版で確認しました。
| ツール | 最新版 | TypeScript 7.0 |
|---|---|---|
| Next.js | 16.4.3 | next build の型チェックは可 |
| vue-tsc(Nuxt) | 3.3.14 | 6.0と併用 |
| @angular/compiler-cli | 22.2.4 | peer >=6.0 <6.1 |
| svelte-check | 4.7.7 | –tsgo で6と7を併用 |
| @astrojs/check | 0.9.12 | peer ^5 || ^6 |
| typescript-eslint | 8.72.1 | peer <6.1.0 |
Next.jsの対応|tsc CLIによるビルド時の型チェック
Next.js 16.4.3はnext buildの型チェックで、既定(experimental.useTypeScriptCli: true)ではプロジェクト内のtscコマンドを呼びます。そのためtypescript@7を入れても追加の設定は要りません。この値をfalseにしてAPI経由の型チェックへ切り替えると、「TypeScript 7.0.2 does not provide the compiler API required by Next.js」で止まります。Next.js 16系の基本はNext.jsとは?16系App Routerで最小アプリを動かす手順と採用判断を参照してください。
Vue・Nuxtの対応|vue-tsc 3系の6.0依存とv4の開発状況
vue-tsc 3系はVolar経由でTypeScriptのAPIを使うため、7.0の公式発表でもVue・MDX・Astro・Svelteは当面6.0を使うよう案内されています。nuxt typecheckもvue-tscを呼ぶので同じ扱いです(Nuxtの版ごとの状況はNuxt 4とは?最新バージョンは4.6|確認方法・Nuxt 3との違い・導入手順)。次のVue Language Tools v4はPR #6170で、7.1のcontent mapperを使い「v4は7.1のみ対応」とする設計が進んでいます。typescript-native-bridgeという7.0のGo実装をTypeScriptのフォークに組み込む非公式パッケージもありますが、公式の配布物ではないため、業務の型チェックは6.0併用で組むのが無難です。
Angularの対応|compiler-cliのTypeScript依存範囲
@angular/compiler-cli 22.2.4のpeerDependenciesはtypescript >=6.0 <6.1で、7.0は範囲外です。公式発表では、CLIでのプロジェクト全体のエラー検出に7.0のtsc、エディタ支援に6.0を使う組み合わせが示されています。Angular本体の版の話はAngular 21の変更点|ゾーンレス既定化とv20からの移行手順・サポート期限にあります。
Svelte・Astroの対応|型チェックツールとTypeScript 6の併用
svelte-checkのREADMEでは、TypeScript 7で使うには--tsgoか--tsgo-experimental-apiを付け、7と6の両方をインストールするよう書かれています。@astrojs/checkのpeerDependenciesは^5.0.0 || ^6.0.0で、7は入っていません。
TypeScript 6から7への移行手順
公式が勧めるのは、先に6.0へ上げて非推奨の警告をすべて消し、そのあと7.0へ上げる2段階です。5.xから一気に7へ上げると、既定値の変更と削除エラーが同時に出て原因を切り分けにくくなります。
- 6.0.3へ上げて
tscを通す。baseUrlとrootDirはts5to6で書き換えられます(npx @andrewbranch/ts5to6 --fixBaseUrl tsconfig.json、--fixRootDirは別に実行)。 ignoreDeprecationsを消してもエラーが出ないことを確かめる。7.0ではこの設定で警告を止められません。- 型APIを使うツール(typescript-eslint・vue-tsc・Angular・Svelte・Astro・ts-jestなど)を洗い出し、該当があれば前章のエイリアス構成にする。
npm install -D typescript@7(併用なら@typescript/native)を入れ、CIの型チェックをtsc --noEmitで回す。JavaScriptを出力する構成では、既存の成果物を退避してから出力ありのビルドを別途実行し、新しく生成されたファイルの配置を確認する。tsgoと@typescript/native-previewが残っていれば外し、エディタはVS Codeの「TypeScript 7」拡張で7の言語サーバーへ切り替える。
コードベースが大きく、ビルド設定や周辺ツールの入れ替えと一緒に進める必要がある場合は、システムマイグレーション・リプレイスとして計画を分けると、型チェックの高速化だけを先に取り込めます。
TypeScript 7へ今は上げないほうがよいケース
速さだけで判断すると、エディタやLintが使えなくなる場面があります。次のどれかに当てはまるなら、7.0はCIの型チェックだけに使い、全面切り替えは7.1安定版(11月24日予定)と周辺ツールの対応を待つほうが損をしません。
- VueやSvelteのSFCを型チェックしている:vue-tscとsvelte-checkは6.0を必要とし、エディタの型表示も6.0の言語サービスに依存しています。
- tsserverプラグインに頼っている:CSS Modulesの型補完、GraphQLのクエリ補完、Angularのテンプレート補完など。7の言語サーバーでは黙って無効になります。
- Compiler APIで自作のコード生成やチェックを書いている:7.0では動かず、7.1のAPIは6.0と互換がないため書き直しが要ります。
- target: es5で出力し続ける必要がある:7.0では指定自体がエラーです。下位変換はBabelやSWCなど別のツールに任せる構成へ変えてからになります。
逆に、Next.jsやViteのReactアプリのようにtsc --noEmitを呼ぶだけの構成で、Lintのパーサーを含む周辺ツールが6.0のAPIに依存しない、または前章のエイリアス構成で動作を確認できるなら、7.0.2への移行を検討できます。
よくある質問
TypeScript 7はいつリリースされましたか?
7.0の正式版は2026年7月8日に公開され、npmの版は7.0.2です。RCは6月18日の7.0.1-rc、Betaは4月21日でした。次の7.1は10月20日にbetaが出ており、安定版は11月24日の予定です。
tsgoとtscはどちらを使えばよいですか?
正式版ではtscを使います。tsgoはプレビュー用パッケージ@typescript/native-previewのコマンド名で、7月7日の版を最後に更新されていません。毎日の開発版が欲しい場合はtypescript@nextを入れます。
TS7.1では何が変わりますか?
6.0とは別設計の新しいAPI(typescript/syncなど)と、.vueなどのファイルを型チェックに載せるcontent mapperが加わり、--target es2026が使えるようになります。DOMの型定義と分配条件型のチェックが変わるため、7.0で通るコードが7.1でエラーになることがあります。
baseUrlが非推奨・エラーと表示されます。どう直せばよいですか?
6.0ではTS5101の非推奨警告、7.0ではTS5102のエラーになります。baseUrlを消し、pathsの値を"./src/*"のようにtsconfigからの相対パスで書きます。baseUrl経由で"lib/util"のようなimportを解決していた場合は、"*": ["./src/*"]を足します。
typescript-eslintはTypeScript 7で使えますか?
2026年10月31日時点の8.72.1は7.0に対応しておらず、typescript@7と一緒に入れるとnpmがERESOLVEで止まります。typescriptを@typescript/typescript6の別名にし、7.0を@typescript/nativeとして入れる構成なら、型情報を使うルールも動きます。