初めてのTypeScript

―型安全なJavaScriptでWeb開発を加速する

[cover photo]
TOPICS
Programming , JavaScript
発行年月日
PRINT LENGTH
336
ISBN
978-4-8144-0036-2
原書
Learning TypeScript
FORMAT
Print PDF EPUB
Ebook
3,740円
Ebookを購入する
Print
3,740円

TypeScriptの本格的な入門書。TypeScriptは、世界で最もよく使われ、かつ最も好まれているプログラミング言語の1つです。本書では、JavaScriptの基礎的な知識のあるプログラマーを対象に、「型」や「型システム」の基本から、明快かつ包括的にTypeScriptを解説します。TypeScriptはバグやタイプミスを防ぎ、コードを読みやすくするのに有用なだけでなく、JavaScriptがどのように動くべきかを宣言し、それを維持するのに役立つ優れたシステムです。読者は本書を読むことで、TypeScriptの基礎と最も重要な機能をマスターできるでしょう。

関連ファイル

目次

賞賛の声
監訳者まえがき
まえがき

第I部 TypeScriptの概念

1章 JavaScriptからTypeScriptへ
    1.1 JavaScriptの歴史
    1.2 バニラJavaScriptの欠陥
        1.2.1 コストのかかる自由
        1.2.2 規律のないドキュメンテーション
        1.2.3 開発者用ツールの弱さ
    1.3 TypeScript!
    1.4 TypeScript Playgroundでコードを書いてみる
        1.4.1 実践TypeScript
        1.4.2 制限による自由
        1.4.3 正確なドキュメンテーション
        1.4.4 強力な開発者用ツール
        1.4.5 構文のコンパイル
    1.5 ローカルでTypeScriptを始める
        1.5.1 ローカルで実行する
        1.5.2 エディターのさまざまな機能
    1.6 TypeScriptに対する誤解
        1.6.1 悪いコードの改善策である
        1.6.2 (大部分が)JavaScriptの拡張である
        1.6.3 JavaScriptよりも遅い
        1.6.4 進化が終わった
    1.7 まとめ

2章 型システム
    2.1 型とは何か?
        2.1.1 TypeScriptの型システム
        2.1.2 エラーの種類
    2.2 割り当て可能性
        2.2.1 割り当て可能性エラーの理解
    2.3 型アノテーション
        2.3.1 不必要な型アノテーション
    2.4 型の形状
        2.4.1 モジュール
    2.5 まとめ

3章 合併型とリテラル型
    3.1 合併型
        3.1.1 合併型の宣言
        3.1.2 合併型のプロパティ
    3.2 型の絞り込み
        3.2.1 割り当てによる絞り込み
        3.2.2 条件チェック
        3.2.3 typeofチェック
    3.3 リテラル型
        3.3.1 リテラル型の割り当て可能性
    3.4 厳格なnullチェック
        3.4.1 10億ドルの過ち
        3.4.2 真値性による絞り込み
        3.4.3 初期値を持たない変数
    3.5 型エイリアス
        3.5.1 型エイリアスはJavaScriptではない
        3.5.2 型エイリアスを組み合わせる
    3.6 まとめ

4章 オブジェクト
    4.1 オブジェクト型
        4.1.1 オブジェクト型の宣言
        4.1.2 オブジェクト型エイリアス
    4.2 構造的型付け
        4.2.1 使われ方のチェック
        4.2.2 過剰プロパティチェック
        4.2.3 ネストされたオブジェクト型
        4.2.4 オプションプロパティ
    4.3 オブジェクト型の合併型
        4.3.1 オブジェクト型の合併型の推論
        4.3.2 オブジェクト型の合併型の明示的型付け
        4.3.3 オブジェクト型の絞り込み
        4.3.4 タグ付き合併型
    4.4 交差型
        4.4.1 交差型の危険性
    4.5 まとめ

第II部 TypeScriptの機能

5章 関数
    5.1 関数のパラメーター
        5.1.1 必須パラメーター
        5.1.2 オプションパラメーター
        5.1.3 デフォルトパラメーター
        5.1.4 レストパラメーター
    5.2 戻り値の型
        5.2.1 明示的な戻り値の型
    5.3 関数の型
        5.3.1 関数の型と括弧
        5.3.2 パラメーターの型推論
        5.3.3 関数型エイリアス
    5.4 その他の戻り値の型
        5.4.1 void
        5.4.2 never
    5.5 関数のオーバーロード
        5.5.1 呼び出しシグネチャの互換性
    5.6 まとめ

6章 配列
    6.1 配列型
        6.1.1 配列型と関数型
        6.1.2 合併型の配列
        6.1.3 進化するany型の配列
        6.1.4 多次元配列
    6.2 配列のメンバー
        6.2.1 注意事項:不安定なメンバー
    6.3 スプレッド演算子とレストパラメーター
        6.3.1 スプレッド演算子
        6.3.2 レストパラメーターへの展開
    6.4 タプル
        6.4.1 タプルの割り当て可能性
        6.4.2 タプルの型推論
    6.5 まとめ

7章 インターフェース
    7.1 型エイリアスvs.インターフェース
    7.2 プロパティの種類
        7.2.1 オプションプロパティ
        7.2.2 読み取り専用プロパティ
        7.2.3 関数とメソッド
        7.2.4 呼び出しシグネチャ
        7.2.5 インデックスシグネチャ
        7.2.6 ネストされたインターフェース
    7.3 インターフェースの拡張
        7.3.1 オーバーライドされたプロパティ
        7.3.2 複数インターフェースの拡張
    7.4 インターフェースのマージ
        7.4.1 メンバー名の競合
    7.5 まとめ

8章 クラス
    8.1 クラスメソッド
    8.2 クラスプロパティ
        8.2.1 関数プロパティ
        8.2.2 初期化チェック
        8.2.3 オプションプロパティ
        8.2.4 読み取り専用プロパティ
    8.3 型としてのクラス
    8.4 クラスとインターフェース
        8.4.1 複数インターフェースの実装
    8.5 クラスの拡張
        8.5.1 クラス拡張の割り当て可能性
        8.5.2 オーバーライドされたコンストラクター
        8.5.3 オーバーライドされたメソッド
        8.5.4 オーバーライドされたプロパティ
    8.6 抽象クラス
    8.7 メンバーの可視性
        8.7.1 静的フィールド修飾子
    8.8 まとめ

9章 型修飾子
    9.1 トップ型
        9.1.1 再びany
        9.1.2 unknown
    9.2 型述語
    9.3 型演算子
        9.3.1 keyof
        9.3.2 typeof
    9.4 型アサーション
        9.4.1 キャッチされるエラーの型アサーション
        9.4.2 非nullアサーション
        9.4.3 型アサーションの注意事項
    9.5 constアサーション
        9.5.1 リテラルとプリミティブ型
        9.5.2 読み取り専用オブジェクト
    9.6 まとめ

10章 ジェネリック
    10.1 ジェネリック関数
        10.1.1 明示的なジェネリック呼び出しの型
        10.1.2 関数の複数の型パラメーター
    10.2 ジェネリックインターフェース
        10.2.1 ジェネリックインターフェースの型引数の推論
    10.3 ジェネリッククラス
        10.3.1 明示的なジェネリッククラスの型
        10.3.2 ジェネリッククラスの拡張
        10.3.3 ジェネリックインターフェースの実装
        10.3.4 メソッドのジェネリック
        10.3.5 クラスの静的メンバーのジェネリック
    10.4 ジェネリック型エイリアス
        10.4.1 ジェネリックなタグ付き合併型
    10.5 ジェネリック修飾子
        10.5.1 ジェネリックのデフォルト型
    10.6 制約付きジェネリック型
        10.6.1 keyofと制約付き型パラメーター
    10.7 Promise
        10.7.1 Promiseの作成
        10.7.2 async関数
    10.8 ジェネリックを適切に使う
        10.8.1 ジェネリックの黄金律
        10.8.2 ジェネリックの命名規則
    10.9 まとめ

第III部 TypeScriptの使用

11章 宣言ファイル
    11.1 宣言ファイル(.d.ts)
    11.2 ランタイム値の宣言
        11.2.1 グローバルな値
        11.2.2 グローバルなインターフェースのマージ
        11.2.3 グローバルな拡張
    11.3 組み込み宣言
        11.3.1 ライブラリー宣言
        11.3.2 DOM宣言
    11.4 モジュール宣言
        11.4.1 ワイルドカードモジュール宣言
    11.5 パッケージの型
        11.5.1 declaration
        11.5.2 依存パッケージの型
        11.5.3 パッケージの型を公開する
    11.6 DefinitelyTyped
        11.6.1 型の入手可能性
    11.7 まとめ

12章 IDE機能の使用
    12.1 コード内の移動
        12.1.1 定義の検索
        12.1.2 参照箇所の検索
        12.1.3 実装の検索
    12.2 コードの記述
        12.2.1 名前の補完
        12.2.2 インポートの自動的な更新
        12.2.3 コードアクション
    12.3 エラーを効率よく処理する
        12.3.1 言語サービスのエラー
    12.4 まとめ

13章 構成オプション
    13.1 tscのオプション
        13.1.1 prettyモード
        13.1.2 監視モード
    13.2 TSConfigファイル
        13.2.1 tsc --init
        13.2.2 CLIvs.構成ファイル
    13.3 ファイルのインクルード
        13.3.1 include
        13.3.2 exclude
    13.4 代替拡張機能
        13.4.1 JSX構文
        13.4.2 resolveJsonModule
    13.5 JavaScriptファイルの出力
        13.5.1 outDir
        13.5.2 target
        13.5.3 宣言ファイルの出力
        13.5.4 ソースマップ
        13.5.5 noEmit
    13.6 型チェック
        13.6.1 lib
        13.6.2 skipLibCheck
        13.6.3 strictモード
    13.7 モジュール
        13.7.1 module
        13.7.2 moduleResolution
        13.7.3 CommonJSとの相互運用性
        13.7.4 isolatedModules
    13.8 JavaScript
        13.8.1 allowJs
        13.8.2 checkJs
        13.8.3 JSDocのサポート
    13.9 構成ファイルの拡張
        13.9.1 extends
        13.9.2 構成ベース
    13.10 プロジェクト参照
        13.10.1 composite
        13.10.2 references
        13.10.3 ビルドモード
    13.11 まとめ

第IV部 課外講義

14章 構文の拡張
    14.1 クラスのパラメータープロパティ
    14.2 実験的なデコレーター
    14.3 enum(列挙型)
        14.3.1 自動的な数値
        14.3.2 文字列値のenum
        14.3.3 const enum(定数列挙型)
    14.4 名前空間
        14.4.1 名前空間エクスポート
        14.4.2 ネストされた名前空間
        14.4.3 型定義における名前空間
        14.4.4 名前空間よりもモジュールを
    14.5 型のみのインポートとエクスポート
    14.6 まとめ

15章 型演算
    15.1 マップ型
        15.1.1 別の型に基づくマップ型
        15.1.2 修飾子の変更
        15.1.3 ジェネリックマップ型
    15.2 条件型
        15.2.1 ジェネリック条件型
        15.2.2 型の分配法則
        15.2.3 inferによる型情報の取得
        15.2.4 マップ条件型
    15.3 never
        15.3.1 neverと交差型と合併型
        15.3.2 neverと条件型
        15.3.3 neverとマップ型
    15.4 テンプレートリテラル型
        15.4.1 組み込み文字列操作型
        15.4.2 テンプレートリテラルキー
        15.4.3 マップ型のキーの再マッピング
    15.5 型演算と複雑さ
    15.6 まとめ

用語集
索引