Skip to content

『プロを目指す人のためのTypeScript入門』目次

鈴木 僚太 (著) プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで Software Design plus の目次とまとめです。

TypeScript に関する知識を体系的に整理し、学習の進捗管理や特定のトピックを素早く参照するためのインデックスです。

  • 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.1 文と式の基本
  • 2.1.2 文と式は “結果” の有無で区別する
  • 2.1.3 式文
  • 2.2.1 変数宣言の構文
  • 2.2.2 識別子
  • 2.2.3 変数に型注釈を与える
  • 2.2.4 let による変数宣言と変数への再代入
  • 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.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.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.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.1 データ処理をしよう
  • 3.8.2 解説
  • 3.8.3 別解
  • 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.1 簡単な関数を書いてみよう
  • 4.6.2 解説
  • 4.6.3 コールバック関数の練習
  • 4.6.4 解説
  • 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.1 クラス宣言はインスタンスの型を作る
  • 5.2.2 new シグネチャによるインスタンス化可能性の表現
  • 5.2.3 instanceof 演算子と型の絞り込み
  • 5.3.1 継承 (1) 子は親の機能を受け継ぐ
  • 5.3.2 継承 (2) 親の機能を上書きする
  • 5.3.3 override 修飾子とその威力
  • 5.3.4 private と protected の動作と使いどころ
  • 5.3.5 implements キーワードによるクラスの型チェック
  • 5.4.1 関数の中の this は呼び出し方によって決まる
  • 5.4.2 アロー関数における this
  • 5.4.3 this を操作するメソッド
  • 5.4.4 関数の中以外の this
  • 5.5.1 throw 文と Error オブジェクト
  • 5.5.2 例外をキャッチする try-catch 文
  • 5.5.3 例外処理と大域脱出
  • 5.5.4 finally で脱出に割り込む
  • 5.6.1 クラスに書き換えてみる
  • 5.6.2 解説
  • 5.6.3 クラスを関数に書き換えてみる
  • 5.6.4 解説

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.1 4 種類のリテラル型
  • 6.2.2 テンプレートリテラル型
  • 6.2.3 ユニオン型とリテラル型を組み合わせて使うケース
  • 6.2.4 リテラル型の widening
  • 6.2.5 widening されるリテラル型・widening されないリテラル型
  • 6.3.1 等価演算子を用いる絞り込み
  • 6.3.2 typeof 演算子を用いる絞り込み
  • 6.3.3 代数的データ型をユニオン型で再現するテクニック
  • 6.3.4 switch 文でも型を絞り込める
  • 6.4.1 lookup 型とは
  • 6.4.2 keyof 型とは
  • 6.4.3 keyof 型・lookup 型とジェネリクス
  • 6.4.4 number 型もキーになれる?
  • 6.5.1 型アサーションを用いて式の型をごまかす
  • 6.5.2 as const の用法
  • 6.6.1 any 型という最終兵器
  • 6.6.2 any 型の存在理由
  • 6.6.3 any に近いが安全な unknown 型
  • 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.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.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.1 @types パッケージのインストール
  • 7.4.1 ファイルを読み込んでみる
  • 7.4.2 解説
  • 7.4.3 path モジュールも使ってみる
  • 7.4.4 解説
  • 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.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.1 async 関数を作ってみる
  • 8.4.2 await 式も使ってみる
  • 8.4.3 await の返り値
  • 8.4.4 await とエラー処理
  • 8.4.5 async 関数のいろいろな宣言方法
  • 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 さらなる学習の道しるべ