Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TypeScript 6.0で非推奨化されるオプションたち

Avatar for uhyo uhyo
November 23, 2025

TypeScript 6.0で非推奨化されるオプションたち

2025-11-23 TSKaigi Hokuriku 2025

Avatar for uhyo

uhyo

November 23, 2025
Tweet

More Decks by uhyo

Other Decks in Technology

Transcript

  1. ES5へのトランスパイルは大変 トランスパイル後: function sum(nums) { var e_1, _a; var sum

    = 0; try { for (var nums_1 = __values(nums), nums_1_1 = nums_1.next(); !nums_1_1.done; nums_1_1 = nums_1.next()) { var v = nums_1_1.value; sum += v; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (nums_1_1 && !nums_1_1.done && (_a = nums_1.return)) _a.call(nums_1); } 22
  2. ES5へのトランスパイルは大変 トランスパイル後: function getMenuItems(user) { return __generator(this, function (_a) {

    switch (_a.label) { case 0: return [4 /*yield*/, "Home"]; case 1: _a.sent(); return [4 /*yield*/, "Search"]; case 2: _a.sent(); if (!user.isAdmin) return [3 /*break*/, 4]; return [4 /*yield*/, "Admin"]; case 3: _a.sent(); _a.label = 4; case 4: return [4 /*yield*/, "Settings"]; case 5: _a.sent(); return [2 /*return*/]; } }); 24
  3. moduleResolution: classic why? npm文化となり、大体のランタイムがNode.jsと同様の モジュール解決をするようになった。 (“react” → ./node_modules/react のような基本ルール、 package.jsonのexports

    フィールドのサポートなど) ただ、Node.jsのESMは拡張子が必要でNode.js 以外と異なるので、そちらに合わせたbundlerが 登場している。 33
  4. ⑥alwaysStrict: false (?) •“use strict” と書かなくてもソースコードを常に strict modeとして扱うオプション •今はデフォルトfalseだが、“strict”: true

    に含ま れるのでtrueにしているプロジェクトが多い (デフォルト値をtrueにするだけなのか、alwaysStrict オプション自体を消すのかははっきり決まっていないが、 多分オプションを消す) 36
  5. ⑪tscにファイル名を渡したときの挙動 • tsc foo.ts のようにすると…… • 従来挙動: tsconfig.jsonを無視してデフォルト設定 で実行 •

    新挙動: tsconfig.jsonがある場合はエラーが発生。 --ignoreConfig(仮)を指定すると従来挙動 50
  6. 複数namespace間での変数参照: 例 namespace Tax { export const rate = 0.1;

    } const rate = 0.05; namespace Tax { function applyTax(price: number) { return price * rate; } } 56 このrateは何を指す?
  7. 複数namespace間での変数参照: 例 namespace Tax { export const rate = 0.1;

    } const rate = 0.05; namespace Tax { function applyTax(price: number) { return price * rate; } } 57 従来挙動: このrateを指す (別ファイルだとしても!)
  8. 複数namespace間での変数参照: 例 namespace Tax { export const rate = 0.1;

    } const rate = 0.05; namespace Tax { function applyTax(price: number) { return price * rate; } } 58 新挙動: このrateを指す