TypeScriptの実用書。TypeScriptは、驚異的な柔軟性と豊かな表現力を備えた型システムを持ち、JavaScriptコミュニティに広く浸透しています。その一方、TypeScriptは多くの高度な機能を持つため、それらを使いこなし、真に「effectiveな」TypeScriptコードを書ける開発者は決して多くありません。本書では、TypeScriptを最大限に活用するための83項目のアドバイスを、実践的なコードとともに提供します。本書を読めば、TypeScriptの基本をマスターしたばかりの初級者が中級者へ、そしてTypeScript言語を使いこなすエキスパートへとステップアップできるでしょう。
Effective TypeScript 第2版
―型システムの力を最大限に引き出す83項目
Dan Vanderkam 著、今村 謙士 訳
![[cover photo]](https://www.oreilly.co.jp/books/images/picture_large978-4-8144-0109-3.jpeg)
- TOPICS
- JavaScript
- 発行年月日
- 2025年04月
- PRINT LENGTH
- 448
- ISBN
- 978-4-8144-0109-3
- 原書
- Effective TypeScript, 2nd Edition
- FORMAT
- Print PDF EPUB
関連ファイル
目次
賞賛の声 訳者まえがき まえがき(第2版) まえがき(初版) 1章 TypeScriptとは何か 項目1 TypeScriptとJavaScriptの関係を理解する 項目2 どのTypeScriptオプションが使われているか把握する 項目3 コード生成は型に依存しないことを理解する 項目4 構造的型付けに慣れる 項目5 any型の使用を制限する 2章 TypeScriptの型システム 項目6 エディターを使って型システムを調査、探求する 項目7 型を値の集合として考える 項目8 型空間のシンボルと値空間のシンボルの見分け方を知る 項目9 型アノテーションを型アサーションより優先的に使用する 項目10 ラッパーオブジェクト型(String、Number、Boolean、Symbol、BigInt)を使用しない 項目11 余剰プロパティチェックと型チェックを区別する 項目12 可能なら関数式全体に型を適用する 項目13 type(型エイリアス)とinterfaceの違いを知る 項目14 readonlyを使用して変更にまつわるエラーを避ける 項目15 型演算とジェネリック型を使って重複を避ける 項目16 インデックスシグネチャよりも適切な代替手段を使う 項目17 数値型のインデックスシグネチャを避ける 3章 型推論と制御フロー解析 項目18 推論可能な型でコードを乱雑にしない 項目19 異なる型には異なる変数を使う 項目20 変数の型がどのように決まるか理解する 項目21 オブジェクトを一度に構築する 項目22 型の絞り込みを理解する 項目23 エイリアスを作成したら一貫してそれを使う 項目24 型推論に文脈がどう使われるか理解する 項目25 進化する型を理解する 項目26 関数型の標準APIやライブラリを使って型の流れを促進する 項目27 コールバックの代わりにasync関数を使用して型の流れを改善する 項目28 クラスやカリー化を使って型パラメーターを段階的に割り当てる 4章 型設計 項目29 有効な状態のみ表現する型を作る 項目30 入力には寛容に、出力には厳格に 項目31 型情報をドキュメントで繰り返さない 項目32 nullやundefinedを型エイリアスに含めない 項目33 null値を型の外側に押しやる 項目34 ユニオンを含むインターフェイスよりも、インターフェイスのユニオンを選択する 項目35 stringよりもそれに代わる、より精度の高い型を選択する 項目36 特別な値には専用の型を使用する 項目37 オプションプロパティは限定的に使用する 項目38 同じ型のパラメーターの繰り返しを避ける 項目39 差異のモデリングより型の統一を優先する 項目40 正確でない型より精度の低い型を選択する 項目41 ドメインの言語を使って型を命名する 項目42 たまたま目にしたデータに基づく型を避ける 5章 不健全性とany型 項目43 可能なかぎり狭いスコープでany型を使う 項目44 anyをそのまま使うのではなく、より具体的な形式で使う 項目45 安全でない型アサーションを、適切に型付けされた関数の内部に隠す 項目46 型が不明な値には、anyではなくunknownを使う 項目47 モンキーパッチではなく、より型安全なアプローチを採用する 項目48 健全性の罠を回避する 項目49 型カバレッジを監視し、型安全性のリグレッションを防ぐ 6章 ジェネリックと型レベルプログラミング 項目50 ジェネリックを型に対する関数と考える 項目51 不必要な型パラメーターを避ける 項目52 オーバーロードシグネチャより条件型を優先的に使用する 項目53 条件型のユニオンでの分配を制御する 項目54 テンプレートリテラル型を使ってDSLや文字列間の関係をモデリングする 項目55 型のテストを書く 項目56 型の表示に配慮する 項目57 再帰的なジェネリック型は末尾再帰にする 項目58 コード生成を複雑な型の代替手段として検討する 7章 TypeScriptレシピ集 項目59 never型を使って網羅性チェックを行う 項目60 オブジェクトに対して反復処理する方法を知る 項目61 Record型を使って値の同期を保つ 項目62 レストパラメーターとタプル型を使って、可変長引数の関数をモデリングする 項目63 never型のオプションプロパティを使って、排他的論理和をモデリングする 項目64 名前的型付けのためにブランドを使うことを検討する 8章 型宣言と@types 項目65 TypeScriptと@typesはdevDependenciesに追加する 項目66 型宣言の依存関係に関わる3つのバージョンを理解する 項目67 パブリックなAPIで使われるすべての型をエクスポートする 項目68 APIのコメントにTSDocを使う 項目69 コールバックのthisがAPIの一部なら、それに型を与える 項目70 型を部分的にコピーして依存を断ち切る 項目71 モジュールオーグメンテーションを使って型を改善する 9章 コードを書いて実行する 項目72 TypeScriptの独自機能の使用を避け、ECMAScriptの機能を使う 項目73 ソースマップを使ってTypeScriptをデバッグする 項目74 実行時に型を再構築する方法を知る 項目75 DOMの型階層を理解する 項目76 ターゲットとする環境の正確なモデルを作る 項目77 型チェックとユニットテストの関係を理解する 項目78 コンパイラーのパフォーマンスに注意を払う 10章 コードのモダン化とTypeScriptへの移行 項目79 モダンなJavaScriptを書く 項目80 @ts-checkとJSDocを使ってTypeScriptを試す 項目81 allowJsを使ってTypeScriptとJavaScriptを共存させる 項目82 依存関係グラフの下から上へモジュールごとに移行する 項目83 noImplicitAnyを有効にするまで、移行が完了したと考えない 付録A 初版の項目とのマッピング 付録B 推奨事項の実践法 項目84 コンパイラーオプションやリンターを使ってコードに規約を適用する 索引