『プロを目指す人のためのTypeScript入門』目次
鈴木 僚太 (著) プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで Software Design plus の目次とまとめです。
TypeScript に関する知識を体系的に整理し、学習の進捗管理や特定のトピックを素早く参照するためのインデックスです。
第1章 イントロダクション
Section titled “第1章 イントロダクション”- 1.1.1 JavaScript に対する “静的型付け”
- 1.1.2 高い表現力を持つ型システム
- 1.1.3 静的型付けのメリット (1) 型安全性
- 1.1.4 静的型付けのメリット (2) ドキュメント化と入力補完
- 1.1.5 TypeScript 年表
- 1.2.1 TypeScript コンパイラの役割 (1) 型チェック
- 1.2.2 TypeScript コンパイラの役割 (2) トランスパイル
- 1.2.3 TypeScript と ECMAScript の関係
- 1.3.1 Node.js のインストール
- 1.3.2 エディタの準備
- 1.3.3 ディレクトリの作成と TypeScript のインストール
- 1.3.4 tsconfig.json の準備
- 1.3.5 初めての TypeScript プログラム
第2章 基本的な文法・基本的な型
Section titled “第2章 基本的な文法・基本的な型”2.1 文と式
Section titled “2.1 文と式”- 2.1.1 文と式の基本
- 2.1.2 文と式は “結果” の有無で区別する
- 2.1.3 式文
2.2 変数の宣言と使用
Section titled “2.2 変数の宣言と使用”- 2.2.1 変数宣言の構文
- 2.2.2 識別子
- 2.2.3 変数に型注釈を与える
- 2.2.4 let による変数宣言と変数への再代入
2.3 プリミティブ型
Section titled “2.3 プリミティブ型”- 2.3.1 プリミティブとは何か
- 2.3.2 TypeScript における数値型の特徴
- 2.3.3 数値リテラル
- 2.3.4 任意精度整数 (BigInt)
- 2.3.5 文字列型と 3 種類の文字列リテラル
- 2.3.6 文字列中のエスケープシーケンス
- 2.3.7 真偽値と真偽値リテラル
- 2.3.8 null と undefined
- 2.3.9 プリミティブ型同士の変換 (1) 暗黙の変換を体験する
- 2.3.10 プリミティブ型同士の変換 (2) 明示的な変換を行う
2.4 演算子
Section titled “2.4 演算子”- 2.4.1 算術演算子 (1) 二項演算子
- 2.4.2 算術演算子 (2) 単項演算子
- 2.4.3 文字列の結合を + 演算子で行う
- 2.4.4 比較演算子と等価演算子
- 2.4.5 論理演算子 (1) 真偽値の演算
- 2.4.6 論理演算子 (2) 一般形と短絡評価
- 2.4.7 条件演算子
- 2.4.8 代入演算子
- 2.4.9 その他の演算子
2.5 基本的な制御構文
Section titled “2.5 基本的な制御構文”- 2.5.1 条件分岐 (1) if 文の基本
- 2.5.2 ブロック
- 2.5.3 条件分岐 (2) else を使う
- 2.5.4 switch 文
- 2.5.5 while 文によるループ
- 2.5.6 for 文によるループ
2.6 力試し
Section titled “2.6 力試し”- 2.6.1 FizzBuzz を書いてみよう
- 2.6.2 解説
第3章 オブジェクトの基本とオブジェクトの型
Section titled “第3章 オブジェクトの基本とオブジェクトの型”- 3.1.1 オブジェクトは “連想配列” である
- 3.1.2 オブジェクトリテラル (1) 基本的な構文
- 3.1.3 オブジェクトリテラル (2) プロパティ名の種々の指定方法
- 3.1.4 プロパティアクセス:値の取得と代入
- 3.1.5 オブジェクトリテラル (3) スプレッド構文
- 3.1.6 オブジェクトはいつ “同じ” なのか
- 3.2.1 オブジェクト型の記法
- 3.2.2 オブジェクト型の型チェックと安全性
- 3.2.3 type 文で型に別名をつける
- 3.2.4 interface 宣言でオブジェクト型を宣言する
- 3.2.5 任意のプロパティ名を許容する型(インデックスシグネチャ)
- 3.2.6 オプショナルなプロパティの宣言
- 3.2.7 読み取り専用プロパティの宣言
- 3.2.8 typeof キーワードで変数の型を得る
- 3.3.1 部分型とは
- 3.3.2 プロパティの包含関係による部分型関係の発生
- 3.3.3 余剰プロパティに対する型エラーについて
- 3.4.1 型引数を持つ型を宣言する
- 3.4.2 型引数を持つ型を使用する
- 3.4.3 部分型関係による型引数の制約
- 3.4.4 オプショナルな型引数
- 3.5.1 配列リテラルで配列を作成する
- 3.5.2 配列の要素にアクセスする
- 3.5.3 配列型の記法
- 3.5.4 readonly 配列型
- 3.5.5 配列の機能を使う
- 3.5.6 for-of 文によるループ
- 3.5.7 タプル型
- 3.6.1 オブジェクトの分割代入 (1) 基本的なパターン
- 3.6.2 オブジェクトの分割代入 (2) ネストしたパターン
- 3.6.3 配列の分割代入
- 3.6.4 分割代入のデフォルト値
- 3.6.5 rest パターンでオブジェクトの残りを作成する
- 3.7.1 Date オブジェクト
- 3.7.2 正規表現オブジェクト (1) 正規表現の基本
- 3.7.3 正規表現オブジェクト (2) 正規表現を使う方法
- 3.7.4 Map オブジェクト・Set オブジェクト
- 3.7.5 プリミティブなのにプロパティがある?
3.8 力試し
Section titled “3.8 力試し”- 3.8.1 データ処理をしよう
- 3.8.2 解説
- 3.8.3 別解
第4章 TypeScript の関数
Section titled “第4章 TypeScript の関数”- 4.1.1 関数宣言で関数を作る
- 4.1.2 返り値がない関数を作る
- 4.1.3 関数式で関数を作る
- 4.1.4 アロー関数式で関数を作る
- 4.1.5 アロー関数式の省略形
- 4.1.6 メソッド記法で関数を作る
- 4.1.7 可変長引数の宣言
- 4.1.8 関数呼び出しにおけるスプレッド構文
- 4.1.9 オプショナル引数の宣言
- 4.1.10 コールバック関数を使ってみる
- 4.2.1 関数型の記法
- 4.2.2 返り値の型注釈は省略可能
- 4.2.3 返り値の型注釈は省略すべきか
- 4.2.4 引数の型注釈が省略可能な場合
- 4.2.5 コールシグネチャによる関数型の表現
- 4.3.1 返り値の型による部分型関係
- 4.3.2 引数の型による部分型関係
- 4.3.3 引数の数による部分型関係
- 4.4.1 関数の型引数とは
- 4.4.2 関数の型引数を宣言する方法
- 4.4.3 関数の型引数は省略できる
- 4.4.4 型引数を持つ関数型
- 4.5.1 変数のスコープとは
- 4.5.2 ブロックスコープと関数スコープ
4.6 力試し
Section titled “4.6 力試し”- 4.6.1 簡単な関数を書いてみよう
- 4.6.2 解説
- 4.6.3 コールバック関数の練習
- 4.6.4 解説
第5章 TypeScript のクラス
Section titled “第5章 TypeScript のクラス”5.1 クラスの宣言と使用
Section titled “5.1 クラスの宣言と使用”- 5.1.1 クラス宣言と new 構文
- 5.1.2 プロパティを宣言する
- 5.1.3 メソッドを宣言する
- 5.1.4 コンストラクタ
- 5.1.5 静的プロパティ・静的メソッド
- 5.1.6 3 種類のアクセシビリティ修飾子
- 5.1.7 コンストラクタ引数でのプロパティ宣言
- 5.1.8 クラス式でクラスを作成する
- 5.1.9 もう 1 つのプライベートプロパティ
- 5.1.10 クラスの静的初期化ブロック
- 5.1.11 型引数を持つクラス
5.2 クラスの型
Section titled “5.2 クラスの型”- 5.2.1 クラス宣言はインスタンスの型を作る
- 5.2.2 new シグネチャによるインスタンス化可能性の表現
- 5.2.3 instanceof 演算子と型の絞り込み
5.3 クラスの継承
Section titled “5.3 クラスの継承”- 5.3.1 継承 (1) 子は親の機能を受け継ぐ
- 5.3.2 継承 (2) 親の機能を上書きする
- 5.3.3 override 修飾子とその威力
- 5.3.4 private と protected の動作と使いどころ
- 5.3.5 implements キーワードによるクラスの型チェック
5.4 this
Section titled “5.4 this”- 5.4.1 関数の中の this は呼び出し方によって決まる
- 5.4.2 アロー関数における this
- 5.4.3 this を操作するメソッド
- 5.4.4 関数の中以外の this
5.5 例外処理
Section titled “5.5 例外処理”- 5.5.1 throw 文と Error オブジェクト
- 5.5.2 例外をキャッチする try-catch 文
- 5.5.3 例外処理と大域脱出
- 5.5.4 finally で脱出に割り込む
5.6 力試し
Section titled “5.6 力試し”- 5.6.1 クラスに書き換えてみる
- 5.6.2 解説
- 5.6.3 クラスを関数に書き換えてみる
- 5.6.4 解説
第6章 高度な型
Section titled “第6章 高度な型”6.1 ユニオン型とインターセクション型
Section titled “6.1 ユニオン型とインターセクション型”- 6.1.1 ユニオン型の基本
- 6.1.2 伝播するユニオン型
- 6.1.3 インターセクション型とは
- 6.1.4 ユニオン型とインターセクション型の表裏一体な関係
- 6.1.5 オプショナルプロパティ再訪
- 6.1.6 オプショナルチェイニングによるプロパティアクセス
6.2 リテラル型
Section titled “6.2 リテラル型”- 6.2.1 4 種類のリテラル型
- 6.2.2 テンプレートリテラル型
- 6.2.3 ユニオン型とリテラル型を組み合わせて使うケース
- 6.2.4 リテラル型の widening
- 6.2.5 widening されるリテラル型・widening されないリテラル型
6.3 型の絞り込み
Section titled “6.3 型の絞り込み”- 6.3.1 等価演算子を用いる絞り込み
- 6.3.2 typeof 演算子を用いる絞り込み
- 6.3.3 代数的データ型をユニオン型で再現するテクニック
- 6.3.4 switch 文でも型を絞り込める
6.4 keyof 型・lookup 型
Section titled “6.4 keyof 型・lookup 型”- 6.4.1 lookup 型とは
- 6.4.2 keyof 型とは
- 6.4.3 keyof 型・lookup 型とジェネリクス
- 6.4.4 number 型もキーになれる?
6.5 as による型アサーション
Section titled “6.5 as による型アサーション”- 6.5.1 型アサーションを用いて式の型をごまかす
- 6.5.2 as const の用法
6.6 any 型と unknown 型
Section titled “6.6 any 型と unknown 型”- 6.6.1 any 型という最終兵器
- 6.6.2 any 型の存在理由
- 6.6.3 any に近いが安全な unknown 型
6.7 さらに高度な型
Section titled “6.7 さらに高度な型”- 6.7.1 object 型・never 型
- 6.7.2 型述語(ユーザー定義型ガード)
- 6.7.3 可変長タプル型
- 6.7.4 mapped types
- 6.7.5 conditional types
- 6.7.6 組み込みの型を使いこなす
6.8 力試し
Section titled “6.8 力試し”- 6.8.1 タグ付きユニオンの練習 (1)
- 6.8.2 解説
- 6.8.3 タグ付きユニオンの練習 (2)
- 6.8.4 解説
- 6.8.5 タグ付きユニオンの練習 (3)
- 6.8.6 解説
第7章 TypeScript のモジュールシステム
Section titled “第7章 TypeScript のモジュールシステム”7.1 import 宣言と export 宣言
Section titled “7.1 import 宣言と export 宣言”- 7.1.1 変数をエクスポートとインポート
- 7.1.2 関数もエクスポートできる
- 7.1.3 default エクスポートと default インポート
- 7.1.4 型のインポート・エクスポート
- 7.1.5 その他の関連構文
7.2 Node.js のモジュールシステム
Section titled “7.2 Node.js のモジュールシステム”- 7.2.1 Node.js の組み込みモジュール
- 7.2.2 npm とは
- 7.2.3 package.json と package-lock.json の役割
7.3 DefinitelyTyped と @types
Section titled “7.3 DefinitelyTyped と @types”- 7.3.1 @types パッケージのインストール
7.4 力試し
Section titled “7.4 力試し”- 7.4.1 ファイルを読み込んでみる
- 7.4.2 解説
- 7.4.3 path モジュールも使ってみる
- 7.4.4 解説
第8章 非同期処理
Section titled “第8章 非同期処理”8.1 非同期処理とは
Section titled “8.1 非同期処理とは”- 8.1.1 “時間がかかる処理” としての非同期処理
- 8.1.2 シングルスレッドモデル・ノンブロッキング
8.2 コールバックによる非同期処理の扱い
Section titled “8.2 コールバックによる非同期処理の扱い”- 8.2.1 コールバック関数とは
- 8.2.2 タイマーの例
- 8.2.3 fs モジュールによるファイル操作の例
- 8.2.4 同期処理と非同期処理の順序
8.3 Promise を使う
Section titled “8.3 Promise を使う”- 8.3.1 Promise 版の fs を使ってみる
- 8.3.2 コールバック関数の登録とエラー処理 (1)
- 8.3.3 コールバック関数の登録とエラー処理 (2)
- 8.3.4 自分で Promise オブジェクトを作る
- 8.3.5 Promise の静的メソッド (1)
- 8.3.6 Promise の静的メソッド (2)
- 8.3.7 Promise の静的メソッド (3)
- 8.3.8 Promise チェーン (1) チェーンを作る
- 8.3.9 Promise チェーン (2) 非同期処理の連鎖
- 8.3.10 Promise チェーン (3) エラーの扱い
- 8.3.11 dynamic import 構文
8.4 async/await 構文
Section titled “8.4 async/await 構文”- 8.4.1 async 関数を作ってみる
- 8.4.2 await 式も使ってみる
- 8.4.3 await の返り値
- 8.4.4 await とエラー処理
- 8.4.5 async 関数のいろいろな宣言方法
8.5 力試し
Section titled “8.5 力試し”- 8.5.1 fs/promises を使ってみる
- 8.5.2 解説
- 8.5.3 タイムアウトを追加してみよう
- 8.5.4 解説
第9章 TypeScript のコンパイラオプション
Section titled “第9章 TypeScript のコンパイラオプション”9.1 tsconfig.json によるコンパイラオプションの設定
Section titled “9.1 tsconfig.json によるコンパイラオプションの設定”- 9.1.1 tsconfig.json の自動生成
- 9.1.2 ファイルパス周りの設定を押さえる
9.2 チェックの厳しさに関わるオプション
Section titled “9.2 チェックの厳しさに関わるオプション”- 9.2.1 チェックをまとめて有効にできる strict オプション
- 9.2.2 strictNullChecks で null と undefined を安全に検査する
- 9.2.3 型の書き忘れや推論の失敗を防ぐ noImplicitAny オプション
- 9.2.4 インデックスアクセスを厳しくする noUncheckedIndexedAccess オプション
- 9.2.5 新規プロジェクトでのお勧め設定
- 付録 1 演算子一覧・結合順位表
- 付録 2 さらなる学習の道しるべ