- TypeScript
TypeScript 7の新機能と変更点|6から7への移行と破壊的変更一覧
TypeScript 7は、コンパイラ本体をGo言語で書き直したネイティブ版で、tscの型チェックと変換が大幅に速くなったメジャーバージョンです。言語の文法はほぼそのままで、変わるのは「速度」「tsconfigで使えるオプション」「プログラムから呼ぶAPI」の3点です。 公式ブログによると正式版 7.0 の公開は2026年7月8日で、6.0 で非推奨になったオプションは 7.0 ですべてエラーになります。
確認環境:Ubuntu 24.04(CPU 2コア)、Node.js 22.22.2、npm 10.9.7、TypeScript 5.9.3 / 6.0.3 / 7.0.2(それぞれ別フォルダに npm で導入)。この記事のエラー文と所要時間は、同じ tsconfig.json とソースを3つの版の tsc にかけて、実際に表示されたものです。
TypeScript 7の変更点の早見表
6から7で変わること
| 分類 | 6.0.3 | 7.0.2 | 対応 |
|---|---|---|---|
| コンパイラの実装 | JavaScript 製 | Go 製のネイティブ実行ファイル | そのまま速くなる |
| 所要時間(1,201ファイル、tsc --noEmit) | 17.9秒 | 2.4秒 | 手元の計測で約7倍 |
| 非推奨オプション(baseUrl など) | TS5101 / TS5107 のエラー。ignoreDeprecations で抑えられる | TS5102 / TS5108 のエラー。抑える手段なし | tsconfig を直す |
| 既定値(strict、module、target、rootDir、types) | 6.0 で変更済み | 6.0 と同じ | 6 に上げた時点で対応 |
| require("typescript") で使える API | createProgram などあり | version など2項目のみ | API を使う道具は 6 を併用 |
| 並列数の指定 | なし(--checkers は TS5025) | --checkers、--singleThreaded が使える | 必要に応じて指定 |
| tsc ファイル名(tsconfig.json あり) | TS5112 | TS5112 | ファイル名を付けない |
削除・既定値変更されたオプションと直し方
| オプション | 5.9.3 | 6.0.3 | 7.0.2 | 直し方 |
|---|---|---|---|---|
| baseUrl | 通る | TS5101 | TS5102 | baseUrl を消し、paths を ./ 始まりで書く |
| target: es5 | 通る | TS5107 | TS5108 | es2015 以降にする |
| moduleResolution: node / node10 | 通る | TS5107 | TS5108 | nodenext か bundler にする |
| moduleResolution: classic | 通る | TS5107 | TS5108 | nodenext か bundler にする |
| module: amd / system | 通る | TS5107 | TS5108 | esnext などにする |
| outFile | 通る | TS5101 | TS5102 | outDir にして、1ファイル化はバンドラーに任せる |
| esModuleInterop: false | 通る | TS5107 | TS5108 | 行を消す |
| alwaysStrict: false | 通る | TS5107 | TS5108 | 行を消す |
| downlevelIteration | 通る | TS5101 | TS5102 | 行を消す |
| strict(書かない場合) | false 扱い | true 扱い(TS7006 など) | true 扱い | 型を直すか "strict": false を明記 |
| rootDir(書かない場合) | ソースから推測 | TS5011 | TS5011 | "rootDir": "./src" を明記 |
| types(書かない場合) | @types を自動で読む | TS2591 | TS2591 | "types": ["node"] を明記 |
| import "./style.css" | 通る | TS2882 | TS2882 | 型宣言を足す |
| module Foo { } | 通る | TS1540 | TS1540 | namespace に書き換える |
| import ... assert { } | 通る | TS2880 | TS2880 | with に書き換える |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「TypeScript 7の新機能と変更点|6から7への移行と破壊的変更一覧」
TypeScript 7で何が新しくなったか
コンパイラがネイティブ実行ファイルになった
typescript パッケージの 7.0.2 を入れると、OS ごとの実行ファイルが一緒に入ります。確認環境では node_modules/@typescript/typescript-linux-x64 が追加され、tsc コマンドはその実行ファイルを呼び出します。
npm install --save-dev typescript@7.0.2
npx tsc --version
Version 7.0.2
プレビュー期間は @typescript/native-preview という別のパッケージで配られ、コマンド名は tsgo でした(npm の登録情報で確認)。正式版では typescript パッケージに入り、コマンド名はこれまでどおり tsc です。 公式ブログでは、プレビュー用パッケージは役目を終えたものとして案内されています。
並列数を指定するオプションが増えた
公式ブログによると、7 では型チェックを複数のワーカーで並列に進め、--checkers でその数(既定は4)、--builders でプロジェクト参照のビルド数、--singleThreaded で並列なしを指定できます。手元では次のとおりでした。
npx tsc -p . --singleThreaded # 7.0.2:通る
npx tsc -p . --checkers 2 # 7.0.2:通る
同じ指定を 6.0.3 に渡すと、知らないオプションとして止まります。
error TS5025: Unknown compiler option '--checkers'. Did you mean 'checkJs'?
プログラムから呼ぶAPIは7.0には入っていない
6 までは require("typescript") で createProgram などの関数を呼べました。7.0.2 で同じことをした結果です。
node -e "const ts=require('typescript');console.log(ts.version, Object.keys(ts).length, typeof ts.createProgram, typeof ts.transpileModule)"
6.0.3 2248 function function
7.0.2 2 undefined undefined
公式ブログには、7.0 は API なしで公開し、7.1 で新しい(これまでと異なる)API を届ける見込みだと書かれています。API を使う道具(リンターやバンドラーのローダーなど)を使っている場合は、後述の「6と7を並べて入れる」方法が役に立ちます。
6と7のtsc所要時間を同じプロジェクトで計測する
速度を比べるために、インターフェース・ジェネリクス・クラスを含むファイルを1,201個(合計約42,000行)生成し、同じ tsconfig.json で 6.0.3 と 7.0.2 にかけました。
{
"compilerOptions": {
"target": "es2022",
"module": "nodenext",
"strict": true,
"rootDir": "./src",
"outDir": "./dist"
}
}
それぞれ3回ずつ動かした time の出力です(v6 は 6.0.3、v7 は 7.0.2)。
v6 tsc --noEmit #1: real 17.755s user 9.526s sys 0.436s
v6 tsc --noEmit #2: real 22.115s user 9.618s sys 0.379s
v6 tsc --noEmit #3: real 17.901s user 9.681s sys 0.462s
v6 tsc #1: real 22.759s user 11.163s sys 0.573s
v6 tsc #2: real 20.439s user 11.082s sys 0.708s
v6 tsc #3: real 17.183s user 11.225s sys 0.699s
v7 tsc --noEmit #1: real 2.560s user 2.098s sys 0.275s
v7 tsc --noEmit #2: real 2.421s user 2.125s sys 0.223s
v7 tsc --noEmit #3: real 2.110s user 1.917s sys 0.212s
v7 tsc #1: real 3.009s user 2.318s sys 0.701s
v7 tsc #2: real 3.328s user 2.436s sys 0.624s
v7 tsc #3: real 4.197s user 2.744s sys 0.808s
v7 tsc --noEmit --singleThreaded #1: real 4.346s user 1.840s sys 0.202s
v7 tsc --noEmit --singleThreaded #2: real 3.494s user 1.849s sys 0.127s
v7 tsc --noEmit --singleThreaded #3: real 4.376s user 1.872s sys 0.185s
| 条件 | 6.0.3(3回の中央値) | 7.0.2(3回の中央値) | 比 |
|---|---|---|---|
| tsc --noEmit(型チェックのみ) | 17.9秒 | 2.4秒 | 約7.4倍 |
| tsc(.js を1,201個出力) | 20.4秒 | 3.3秒 | 約6.1倍 |
| tsc --noEmit --singleThreaded | (指定できない) | 4.3秒 | 並列なしでも 6 の約4倍 |
2コアの共有マシンという控えめな条件でも、6〜7倍の差が出ました。 公式ブログは、フルビルドで8〜12倍(VS Code のコードで11.9倍など)という数字を紹介しています。倍率はコア数とプロジェクトの形で変わるので、自分のプロジェクトで測るのが確実です。
内訳は --diagnostics で見られます。
npx tsc -p . --noEmit --diagnostics
(6.0.3)
Files: 1264
Lines: 99333
Memory used: 418455K
Parse time: 3.29s
Bind time: 1.63s
Check time: 12.26s
Total time: 17.18s
(7.0.2)
Files: 1264
Lines: 99346
Memory used: 262888K
Parse time: 0.583s
Bind time: 0.388s
Check time: 3.880s
Total time: 4.908s
読み込み(Parse)と型チェック(Check)の両方が短くなり、メモリの使用量も約418MBから約263MBに減りました(一部の行は省略しています)。
削除されたオプション:6の出力→7の出力→直したtsconfig
ここからは、オプションごとに「6.0.3 の出力全文 → 7.0.2 の出力全文 → 直した tsconfig.json」を並べます。5.9.3 では、どの設定もエラーなしで通りました。番号には次の規則があります。
| 版 | オプションそのものが対象 | オプションの特定の値が対象 | 抑える方法 |
|---|---|---|---|
| 6.0.3 | TS5101(deprecated) | TS5107(deprecated) | "ignoreDeprecations": "6.0" |
| 7.0.2 | TS5102(has been removed) | TS5108(has been removed) | なし(設定を直す) |
一覧表(エラー全文)
| オプション | 6.0.3 の出力 | 7.0.2 の出力 |
|---|---|---|
| baseUrl | error TS5101: Option 'baseUrl' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error. |
error TS5102: Option 'baseUrl' has been removed. Please remove it from your configuration. |
| target: es5 | error TS5107: Option 'target=ES5' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error. |
error TS5108: Option 'target=ES5' has been removed. Please remove it from your configuration. |
| moduleResolution: node10(node も同じ) | error TS5107: Option 'moduleResolution=node10' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error. |
error TS5108: Option 'moduleResolution=node10' has been removed. Please remove it from your configuration. |
| moduleResolution: classic | error TS5107: Option 'moduleResolution=classic' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error. |
error TS5108: Option 'moduleResolution=Classic' has been removed. Please remove it from your configuration. |
| module: amd | error TS5107: Option 'module=AMD' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error. |
error TS5108: Option 'module=AMD' has been removed. Please remove it from your configuration. |
| module: system | error TS5107: Option 'module=System' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error. |
error TS5108: Option 'module=System' has been removed. Please remove it from your configuration. |
| outFile | error TS5101: Option 'outFile' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error. |
error TS5102: Option 'outFile' has been removed. Please remove it from your configuration. |
| esModuleInterop: false | error TS5107: Option 'esModuleInterop=false' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error. |
error TS5108: Option 'esModuleInterop=false' has been removed. Please remove it from your configuration. |
| allowSyntheticDefaultImports: false | error TS5107: Option 'allowSyntheticDefaultImports=false' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error. |
error TS5108: Option 'allowSyntheticDefaultImports=false' has been removed. Please remove it from your configuration. |
| alwaysStrict: false | error TS5107: Option 'alwaysStrict=false' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error. |
error TS5108: Option 'alwaysStrict=false' has been removed. Please remove it from your configuration. |
| downlevelIteration | error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error. |
error TS5102: Option 'downlevelIteration' has been removed. Please remove it from your configuration. |
実際の出力では、先頭に tsconfig.json(5,5): のような場所(行, 列)が付きます。module に amd / system を指定した設定では、7.0.2 で次の行も一緒に出ました。module を直すと消えます。
tsconfig.json(2,3): error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.
baseUrl:pathsを相対パスで書き直す
移行でいちばん手を入れることが多いのが baseUrl です。直す前の tsconfig.json と、そのときの出力です。
{
"compilerOptions": {
"target": "es2022", "module": "esnext", "moduleResolution": "bundler", "strict": true,
"rootDir": "./src", "outDir": "./dist",
"baseUrl": "./src",
"paths": { "@/*": ["*"] }
}
}
// src/index.ts
import { add } from "@/lib/add";
import { sub } from "lib/sub";
console.log(add(1, 2), sub(3, 1));
(6.0.3)
tsconfig.json(5,5): error TS5101: Option 'baseUrl' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.
Visit https://aka.ms/ts6 for migration information.
(7.0.2)
tsconfig.json(5,5): error TS5102: Option 'baseUrl' has been removed. Please remove it from your configuration.
Use '"paths": {"*": ["./src/*"]}' instead.
tsconfig.json(6,24): error TS5090: Non-relative paths are not allowed. Did you forget a leading './'?
baseUrl には2つの役割がありました。paths の基準になることと、"lib/sub" のような書き方を baseUrl からの相対として探すことです。baseUrl を消し、paths の値を tsconfig.json からの相対パス(./ 始まり)で書き、baseUrl 頼みだった import には paths の行を足します。
{
"compilerOptions": {
"target": "es2022", "module": "esnext", "moduleResolution": "bundler", "strict": true,
"rootDir": "./src", "outDir": "./dist",
"paths": { "@/*": ["./src/*"], "lib/*": ["./src/lib/*"] }
}
}
この形は 6.0.3 と 7.0.2 の両方でエラーなしで通りました。
target es5・moduleResolution node10・module amd:値を置き換える
| 直す前 | 直したあと(6.0.3 と 7.0.2 の両方で通った組み合わせ) |
|---|---|
"target": "es5" |
"target": "es2022" |
"module": "commonjs", "moduleResolution": "node10" |
"module": "nodenext"(moduleResolution の行は消す) |
| 同上(バンドラーを使う場合) | "module": "commonjs", "moduleResolution": "bundler" |
"module": "es2015", "moduleResolution": "classic" |
"module": "es2015"(moduleResolution の行は消す) |
"module": "amd" |
"module": "esnext" |
"module": "system", "outFile": "./dist/bundle.js" |
"module": "esnext", "outDir": "./dist" |
"esModuleInterop": false などの false 指定 |
行を消す |
"downlevelIteration": true |
行を消す |
ignoreDeprecationsは7では効かない
6 では "ignoreDeprecations": "6.0" を書くと、非推奨のエラーを抑えたまま使い続けられます。同じ tsconfig.json を3つの版にかけた結果です。
{
"compilerOptions": { "target": "es2022", "module": "commonjs", "moduleResolution": "node10", "ignoreDeprecations": "6.0", "strict": true, "rootDir": "./src", "outDir": "./dist" }
}
(5.9.3)
tsconfig.json(2,118): error TS5103: Invalid value for '--ignoreDeprecations'.
(6.0.3)
エラーなし
(7.0.2)
tsconfig.json(2,86): error TS5108: Option 'moduleResolution=node10' has been removed. Please remove it from your configuration.
ignoreDeprecations は「6 にいる間の猶予」です。 7 に上げる前に、この行を外してもエラーが出ない状態にしておきます。
既定値が変わったオプション:5と6・7の違い
strict、module、target、rootDir、types の既定値は 6.0 で変わり、7.0 も同じです。5 から一気に 7 へ上げる場合は、ここが効いてきます。
module と target:書かないと出力が変わる
compilerOptions に rootDir と outDir だけを書いた設定で、同じソースを変換しました。
export const add = (a: number, b: number): number => a + b;
console.log(add(1, 2));
// 5.9.3 の出力
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.add = void 0;
var add = function (a, b) { return a + b; };
exports.add = add;
console.log((0, exports.add)(1, 2));
// 6.0.3 と 7.0.2 の出力
export const add = (a, b) => a + b;
console.log(add(1, 2));
5.9.3 は CommonJS 形式で var と function に書き換え、6.0.3 と 7.0.2 は ECMAScript モジュールのまま出力します。出力形式を変えたくない場合は、module と target を tsconfig.json に明記します。
strict:書かないとtrue扱いになる
strict を書いていない設定で、次のソースをかけました。
export function label(item) {
return item.name.toUpperCase();
}
let title: string = null;
console.log(label({ name: "task" }), title);
(5.9.3)
エラーなし
(6.0.3 と 7.0.2)
src/index.ts(1,23): error TS7006: Parameter 'item' implicitly has an 'any' type.
src/index.ts(4,5): error TS2322: Type 'null' is not assignable to type 'string'.
型を直すのが本筋ですが、まず版を上げることを優先するなら "strict": false を明記すれば、6.0.3 と 7.0.2 でもエラーなしで通ります。
rootDir:書かないとTS5011になる
tsconfig.json がフォルダの直下、ソースが src にある構成で、rootDir を書かずに outDir だけを指定しました。
{
"compilerOptions": { "target": "es2022", "module": "esnext", "strict": true, "outDir": "./dist" },
"include": ["src"]
}
(5.9.3)
エラーなし。dist/index.js が出力される
(6.0.3 と 7.0.2)
tsconfig.json(2,80): error TS5011: The common source directory of 'tsconfig.json' is './src'. The 'rootDir' setting must be explicitly set to this or another path to adjust your output's file layout.
Visit https://aka.ms/ts6 for migration information.
6.0.3 と 7.0.2 では、出力先も dist/index.js から dist/src/index.js に変わりました。"rootDir": "./src" を足すと、エラーが消えて dist/index.js に戻ります。
types:@typesが自動では読まれない
@types/node を入れただけで、types を書いていない設定です。
console.log(process.argv.length);
(5.9.3)
エラーなし
(6.0.3 と 7.0.2)
src/index.ts(1,13): error TS2591: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node` and then add 'node' to the types field in your tsconfig.
"types": ["node"] を足すと通ります。テスト用の型など、グローバルに効かせたい @types のパッケージは、同じ配列に並べます。
副作用だけのimport:TS2882
noUncheckedSideEffectImports の既定値も true になり、import "./style.css"; のように名前を受け取らない import も、相手が見つかるかどうかを調べるようになりました。
(5.9.3)
エラーなし
(6.0.3 と 7.0.2)
src/index.ts(1,8): error TS2882: Cannot find module or type declarations for side-effect import of './style.css'.
型宣言ファイルを1つ足すと通ります。
// src/css.d.ts
declare module "*.css";
書き換えが必要な構文
| 構文 | 6.0.3 と 7.0.2 の出力 | 書き換え |
|---|---|---|
module Shapes { } |
error TS1540: A 'namespace' declaration should not be declared using the 'module' keyword. Please use the 'namespace' keyword instead. |
namespace Shapes { } |
import data from "./data.json" assert { type: "json" }; |
error TS2880: Import assertions have been replaced by import attributes. Use 'with' instead of 'assert'. |
import data from "./data.json" with { type: "json" }; |
どちらも 5.9.3 ではエラーなしで通り、書き換えたあとは 6.0.3 と 7.0.2 でエラーなしになりました。
6から7への移行前チェック手順
6 で「ignoreDeprecations なし・エラーなし」の状態を作ってから 7 に上げると、7 での作業がほとんど残りません。
手順1:いまの版を確かめて6に上げる
npx tsc --version
npm install --save-dev typescript@6
npx tsc --version
Version 6.0.3
手順2:ignoreDeprecationsを外して型チェックする
tsconfig.json に "ignoreDeprecations" の行があれば外し、出力なしで型チェックします。
npx tsc --noEmit
ここで出た番号を、次の表で仕分けます。
| 出た番号 | 意味 | この記事の対応箇所 |
|---|---|---|
| TS5101 / TS5107 | 7 で削除されるオプション | 削除されたオプション |
| TS5011 | rootDir の明記が必要 | rootDir |
| TS2591 | types の明記が必要 | types |
| TS2882 | 副作用だけの import の相手が見つからない | 副作用だけのimport |
| TS7006 / TS2322 など | strict が true 扱いになった | strict |
| TS1540 / TS2880 | 構文の書き換えが必要 | 書き換えが必要な構文 |
| TS5112 | tsc にファイル名を付けている | scripts の tsc ファイル名 を tsc か tsc -p に直す |
手順3:7に上げて同じコマンドを動かす
npm install --save-dev typescript@7.0.2
npx tsc --version
npx tsc --noEmit
Version 7.0.2
手順4:APIを使う道具があるなら6と7を並べて入れる
公式ブログは、6 の API を残したまま 7 の tsc を使う方法として、package.json に別名で2つ書く形を紹介しています。そのとおりに書いて npm install した結果です。
{
"name": "side-by-side",
"private": true,
"devDependencies": {
"typescript": "npm:@typescript/typescript6@^6.0.2",
"@typescript/native": "npm:typescript@^7.0.2"
}
}
npm install
npx tsc --version
npx tsc6 --version
node -e "console.log(require('typescript').version, typeof require('typescript').createProgram)"
Version 7.0.2
Version 6.0.3
6.0.3 function
| 呼び方 | 動く版 | 用途 |
|---|---|---|
npx tsc |
7.0.2 | 型チェックとビルド |
npx tsc6 |
6.0.3 | 6 の結果と比べたいとき |
require("typescript") |
6.0.3 の API | API を使う道具 |
公式ブログによると、Vue や Svelte などテンプレートに TypeScript を埋め込む道具のエディタ支援は、7 の API が整うまで 6 を使う形になります。ビルドは 7 の tsc、API が必要なところは 6、という分担で始められます。
移行チェックリスト
| 確認すること | コマンド・見る場所 |
|---|---|
| tsconfig.json に baseUrl、outFile、downlevelIteration がない | tsconfig.json(extends 先も含む) |
| target が es2015 以降、moduleResolution が nodenext か bundler | tsconfig.json |
| module、target、strict、rootDir、types を明記している | tsconfig.json |
| ignoreDeprecations の行がない | tsconfig.json |
| 6 でエラーなし | npx tsc --noEmit |
scripts に tsc ファイル名 がない |
package.json |
| require("typescript") を使う道具の有無 | package.json の devDependencies |
| 7 でエラーなし、所要時間の変化 | time npx tsc --noEmit |
よくある質問
Q. tsgoというコマンドは使わなくなりましたか? A. tsgo は、プレビュー用パッケージ @typescript/native-preview のコマンド名です。正式版の typescript 7.0.2 では、コマンド名は tsc です。package.json の scripts は、tsc のままで 7 の速さになります。
Q. 5.xから7へ直接上げられますか? A. 上げられますが、6 を挟むと進めやすくなります。5.9.3 では通っていた設定が、6.0.3 では「非推奨」(TS5101 / TS5107)として理由と一緒に表示され、ignoreDeprecations で一時的に抑えながら1つずつ直せるためです。7.0.2 では同じ設定が「削除済み」(TS5102 / TS5108)になり、抑える手段がありません。
Q. 7にしたら書いたコードの型エラーは変わりますか? A. この記事で比べた範囲では、6.0.3 と 7.0.2 でソースに対する型エラーの番号と文面は同じでした(TS7006、TS2322、TS2591、TS2882、TS1540、TS2880)。違いが出たのは tsconfig.json のオプションに対するエラーです。公式ブログは、JavaScript ファイルの JSDoc の扱いや、絵文字を含むテンプレートリテラル型の分割など、細かな変更点も挙げています。
Q. どのくらい速くなりますか?
A. 手元の1,201ファイルでは、tsc --noEmit が17.9秒から2.4秒になりました(2コア)。公式ブログの数字はフルビルドで8〜12倍です。time npx tsc --noEmit を 6 と 7 で動かせば、自分のプロジェクトの倍率がすぐにわかります。
まとめ
- TypeScript 7 は Go 製のネイティブ版。コマンド名は tsc のままで、手元の計測では型チェックが約7倍速くなった
- 6 の TS5101 / TS5107(非推奨)は、7 で TS5102 / TS5108(削除済み)になる。ignoreDeprecations は 7 では効かない
- baseUrl は消して paths を ./ 始まりに、target es5 は es2015 以降に、moduleResolution node10 / classic は nodenext か bundler に直す
- strict・module・target・rootDir・types の既定値は 6 で変わり、7 も同じ。tsconfig.json に明記しておくと版を上げても結果が変わらない
- 移行は「6 で ignoreDeprecations なし・エラーなし」を先に作ると、7 では npm install と tsc --noEmit の確認だけで済む
- require("typescript") の API は 7.0 には入っていない。必要な道具があるときは、別名で 6 と 7 を並べて入れる
参考・出典
- Announcing TypeScript 7.0(Microsoft TypeScript 公式ブログ):https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/
- Announcing TypeScript 6.0(Microsoft TypeScript 公式ブログ):https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「TypeScript 7の新機能と変更点|6から7への移行と破壊的変更一覧」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。