34 人が閲覧(直近 30 日) TypeScript

TypeScript 7(TS7)とは?Go製tscで約10倍速く|7.0.2への移行とtsgo・7.1 betaの現状

TypeScript 7(TS7)とは?Go製tscで約10倍速く|7.0.2への移行とtsgo・7.1 betaの現状

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へ上げると、既定値の変更と削除エラーが同時に出て原因を切り分けにくくなります。

  1. 6.0.3へ上げてtscを通す。baseUrlとrootDirはts5to6で書き換えられます(npx @andrewbranch/ts5to6 --fixBaseUrl tsconfig.json、--fixRootDirは別に実行)。
  2. ignoreDeprecationsを消してもエラーが出ないことを確かめる。7.0ではこの設定で警告を止められません。
  3. 型APIを使うツール(typescript-eslint・vue-tsc・Angular・Svelte・Astro・ts-jestなど)を洗い出し、該当があれば前章のエイリアス構成にする。
  4. npm install -D typescript@7(併用なら@typescript/native)を入れ、CIの型チェックをtsc --noEmitで回す。JavaScriptを出力する構成では、既存の成果物を退避してから出力ありのビルドを別途実行し、新しく生成されたファイルの配置を確認する。
  5. 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として入れる構成なら、型情報を使うルールも動きます。

関連記事

お気に入りに入れた記事の一覧

一創の公式 SNS

X では毎朝の新着記事と IT ニュースの速報を、YouTube・TikTok・Instagram・LinkedIn・Facebook では記事の解説動画を配信しています。

この記事は以下の記事からリンクされています

ほか 9 件の記事からもリンクされています。

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.11.11 テックブログ Microsoft 2026年11月の月例更新:Outlookの悪用済みCVE-2026-124194と修正版の確認方法
  2. 2026.11.11 テックブログ JANISの不正アクセス:最大11,652名の医療機関情報と情報窃取プログラムの検知設定
  3. 2026.11.11 テックブログ SMBC日興証券の不正アクセス:持株会会員最大5.6万人の範囲と受託システムの分離設計
  4. 2026.01.21 コラム 税務調査の録音は禁止?判例・裁決と国税局マニュアルで見る、断られたときの対応
  5. 2026.11.09 テックブログ ステップゴルフ不正アクセス:口座情報の対象確認と偽連絡・引き落としの注意点

RELATED POSTS 関連記事

目次