Curated Tech Reading Map

次に読むべき技術書が見つかるサイト

ブログ記事

TypeScriptの型を『制約』から『安全装置』に変える:プログラミングTypeScript

著者: DevBookPath 編集部公開日:

TypeScript を書いているのに、型エラーを消すためだけに any を使い続けているなら、それは型システムを活かしているのではなくオフにしているだけだ。型が「コンパイラとのいたちごっこ」に感じるなら、見方を変える必要がある。

元 Facebook のリードエンジニアである Boris Cherny が書いた『プログラミングTypeScript』は、TypeScript の型システムをコンパイラの動作原理から解き明かした一冊だ。基本的な型注釈から条件型・変性の理論、既存 JavaScript コードベースの段階的な移行手順まで、実務で問われる論点を一貫した設計思想でつないでいる。JavaScript の経験を持ち、堅牢なフロントエンド設計に踏み込みたい開発者を想定して書かれており、完全な初学者向けではない点は注意が必要だ。

1. any を捨てて unknown へ——型安全の設計姿勢

本書が一貫して訴えるのは、コンパイル時にバグを排除し切る「型安全」の追求だ。any は型チェッカーの恩恵をまるごと放棄する選択であり、著者はその危険性を具体的に示しながら代替手段を提示する。

推奨されるのが unknown 型だ。すべての値を受け入れながらも、型が確定するまで操作を制限する。実行時の型判定と組み合わせる「ユーザー定義型ガード」によって、絞り込みをエディターの補完機能と安全に連携させられる。「コントロールフロー解析」を活用してコード上で型を段階的に絞り込む手法もあわせて解説されており、any への依存から抜け出す道筋が論理的に示されている。

2. 変性とジェネリクス——直感に反する挙動を集合論で解く

「共変・反変」という概念は、他言語の経験者でも直感に反する挙動を引き起こしがちで、TypeScript でつまずく箇所の一つだ。本書はこれを集合論(スーパータイプとサブタイプの関係)に立脚して説明しており、ルールの導出過程が明快に示されている。

なぜ関数のパラメータが反変でなければ安全性が壊れるのか、tsconfig.jsonstrictFunctionTypes を有効にすると何が変わるのか——実際にランタイムエラーが生じる具体例を交えながら解説する。条件型(Conditional Types)や infer キーワードを使った高度な型演算も同じ理論的基盤の延長として位置づけられており、読み終えるころには「なぜそう書くのか」が理解できている。

3. enum を使うな、移行は5段階で——著者の率直な意見

仕様を中立的に並べるだけの技術書と違い、本書には著者の明確な推奨と批判が随所に出てくる。TypeScript 独自の enum(列挙型)については、実行時に余分なコードが生成されること、型の安全性に欠陥があることを具体的に指摘し、代わりにオブジェクト型や文字列リテラルのユニオン型を使うよう明示する。この「使うな」というスタンスは、実務での意思決定に直結する。

また、既存の大規模 JavaScript プロジェクトを TypeScript へ移行する手順として第 11 章で提示される 5 段階の実務的なプロセス(TSC 設定の導入・JSDoc の活用・拡張子の段階的な変更・厳格オプションの引き上げ)は、テックリードが現場の計画を立てる際のそのまま使える指針になる。日本語版の付録では、原書刊行後に非推奨となった TSLint に代わり、ESLint の設定と AST を操作したカスタム静的解析ルールの書き方が追加されており、チームのコード品質を均一化したい層にとって実用性の高いアップデートだ。

DevBookPath のマップで確認する

この本の学習パス上の位置づけ・前後の読書順は、DevBookPath のグラフで辿れます。

フロントエンドの地図を見る


本記事のリンクには Amazon アソシエイト等の広告が含まれる場合があります。リンク経由の購入で運営者に紹介料が支払われることがあります。

この記事を共有

この地図を共有