プログラミングTypeScript ―スケールするJavaScriptアプリケーション開発

Book description

プログラミング言語TypeScriptの解説書。TypeScriptの型に関する基礎的な内容からその応用、エラー処理の手法、非同期プログラミング、各種フレームワークの利用法、既存のJavaScriptプロジェクトのTypeScript移行の方法まで、言語全般を総合的に解説します。本書全体を通じて、TypeScriptの洗練された型システムを最大限活用するために、コードをどのように記述すべきか、なぜそうすべきかを学べます。

Table of contents

  1.  大扉
  2.  原書大扉
  3.  クレジット
  4.  献辞
  5.  賞賛の声
  6.  監訳者まえがき
  7.  まえがき
  8.   本書の構成
  9.   スタイル
  10.   表記上のルール
  11.   サンプルコードの使用について
  12.   意見と質問
  13.   謝辞
  14.  1章 イントロダクション
  15.  2章 TypeScript:全体像
  16.   2.1 コンパイラー
  17.   2.2 型システム
  18.    2.2.1 TypeScript対JavaScript
  19.   2.3 コードエディターのセットアップ
  20.    2.3.1 tsconfig.json
  21.    2.3.2 tslint.json
  22.   2.4 index.ts
  23.   2.5 練習問題
  24.  3章 型について
  25.   3.1 型についての議論
  26.   3.2 型の初歩
  27.    3.2.1 any
  28.    3.2.2 unknown
  29.    3.2.3 boolean
  30.    3.2.4 number
  31.    3.2.5 bigint
  32.    3.2.6 string
  33.    3.2.7 symbol
  34.    3.2.8 オブジェクト
  35.    3.2.9 型エイリアス、合併、交差
  36.    3.2.10 配列
  37.    3.2.11 タプル
  38.    3.2.12 null、undefined、void、never
  39.    3.2.13 列挙型
  40.   3.3 まとめ
  41.   3.4 練習問題
  42.  4章 関数
  43.   4.1 関数の宣言と呼び出し
  44.    4.1.1 オプションパラメーターとデフォルトパラメーター
  45.    4.1.2 レストパラメーター
  46.    4.1.3 call、apply、bind
  47.    4.1.4 thisの型付け
  48.    4.1.5 ジェネレーター
  49.    4.1.6 イテレーター
  50.    4.1.7 呼び出しシグネチャ
  51.    4.1.8 文脈的型付け
  52.    4.1.9 オーバーロードされた関数の型
  53.   4.2 ポリモーフィズム
  54.    4.2.1 ジェネリックはいつバインドされるか?
  55.    4.2.2 ジェネリックはどこで宣言できるか?
  56.    4.2.3 ジェネリックの型推論
  57.    4.2.4 ジェネリック型エイリアス
  58.    4.2.5 制限付きポリモーフィズム
  59.    4.2.6 ジェネリック型のデフォルトの型
  60.   4.3 型駆動開発
  61.   4.4 まとめ
  62.   4.5 練習問題
  63.  5章 クラスとインターフェース
  64.   5.1 クラスと継承
  65.   5.2 super
  66.   5.3 戻り値の型としてthisを使用する
  67.   5.4 インターフェース
  68.    5.4.1 宣言のマージ
  69.    5.4.2 実装
  70.    5.4.3 「インターフェースの実装」対「抽象クラスの拡張」
  71.   5.5 クラスは構造的に型付けされる
  72.   5.6 クラスは値と型の両方を宣言する
  73.   5.7 ポリモーフィズム
  74.   5.8 ミックスイン
  75.   5.9 デコレーター
  76.   5.10 finalクラスをシミュレートする
  77.   5.11 デザインパターン
  78.    5.11.1 ファクトリーパターン
  79.    5.11.2 ビルダーパターン
  80.   5.12 まとめ
  81.   5.13 練習問題
  82.  6章 高度な型
  83.   6.1 型の間の関係
  84.    6.1.1 サブタイプとスーパータイプ
  85.    6.1.2 変性
  86.    6.1.3 割り当て可能性
  87.    6.1.4 型の拡大
  88.    6.1.5 型の絞り込み
  89.   6.2 完全性
  90.   6.3 高度なオブジェクト型
  91.    6.3.1 オブジェクト型についての型演算子
  92.    6.3.2 レコード型
  93.    6.3.3 マップ型
  94.    6.3.4 コンパニオンオブジェクトパターン
  95.   6.4 関数にまつわる高度な型
  96.    6.4.1 タプルについての型推論の改善
  97.    6.4.2 ユーザー定義型ガード
  98.   6.5 条件型
  99.    6.5.1 分配条件型
  100.    6.5.2 inferキーワード
  101.    6.5.3 組み込みの条件型
  102.   6.6 エスケープハッチ
  103.    6.6.1 型アサーション
  104.    6.6.2 非nullアサーション
  105.    6.6.3 明確な割り当てアサーション
  106.   6.7 名前的型をシミュレートする
  107.   6.8 プロトタイプを安全に拡張する
  108.   6.9 まとめ
  109.   6.10 練習問題
  110.  7章 エラー処理
  111.   7.1 nullを返す
  112.   7.2 例外をスローする
  113.   7.3 例外を返す
  114.   7.4 Option型
  115.   7.5 まとめ
  116.   7.6 練習問題
  117.  8章 非同期プログラミングと並行、並列処理
  118.   8.1 JavaScriptのイベントループ
  119.   8.2 コールバックの処理
  120.   8.3 プロミスを使って健全さを取り戻す
  121.   8.4 asyncとawait
  122.   8.5 非同期ストリーム
  123.    8.5.1 イベントエミッター
  124.   8.6 型安全なマルチスレッディング
  125.    8.6.1 Web Worker(ブラウザー)
  126.    8.6.2 子プロセス(Node.js)*8
  127.   8.7 まとめ
  128.   8.8 練習問題
  129.  9章 フロントエンドとバックエンドのフレームワーク
  130.   9.1 フロントエンドのフレームワーク
  131.    9.1.1 React
  132.    9.1.2 Angular 6/7
  133.   9.2 型安全なAPI
  134.   9.3 バックエンドのフレームワーク
  135.   9.4 まとめ
  136.  10章 名前空間とモジュール
  137.   10.1 JavaScriptモジュールの簡単な歴史
  138.   10.2 インポート、エクスポート
  139.    10.2.1 動的インポート
  140.    10.2.2 CommonJSおよびAMDコードの使用
  141.    10.2.3 モジュールモードとスクリプトモード
  142.   10.3 名前空間
  143.    10.3.1 競合
  144.    10.3.2 コンパイルされた出力結果
  145.   10.4 宣言のマージ
  146.   10.5 まとめ
  147.   10.6 練習問題
  148.  11章 JavaScriptとの相互運用
  149.   11.1 型宣言
  150.    11.1.1 アンビエント変数宣言
  151.    11.1.2 アンビエント型宣言
  152.    11.1.3 アンビエントモジュール宣言
  153.   11.2 JavaScriptからTypeScriptへの漸進的な移行
  154.    11.2.1 ステップ1:TSCを追加する
  155.    11.2.2 ステップ2a:JavaScriptの型チェックを有効にする(オプション)
  156.    11.2.3 ステップ2b:JSDocアノテーションを追加する(オプション)
  157.    11.2.4 ステップ3:ファイルを.tsにリネームする
  158.    11.2.5 ステップ4:厳格にする
  159.   11.3 JavaScriptの型の探索
  160.    11.3.1 JavaScriptファイルが同一プロジェクト内に存在する場合
  161.    11.3.2 サードパーティーのJavaScriptモジュールを利用する場合
  162.   11.4 サードパーティーJavaScriptの使用
  163.    11.4.1 型宣言を備えているJavaScript
  164.    11.4.2 DefinitelyTypedに型宣言を持つJavaScript
  165.    11.4.3 DefinitelyTypedに型宣言を持たないJavaScript
  166.   11.5 まとめ
  167.  12章 TypeScriptのビルドと実行
  168.   12.1 TypeScriptプロジェクトのビルド
  169.    12.1.1 プロジェクトのレイアウト
  170.    12.1.2 成果物
  171.    12.1.3 コンパイルターゲットの指定
  172.    12.1.4 ソースマップを有効にする
  173.    12.1.5 プロジェクト参照
  174.    12.1.6 エラーの監視
  175.   12.2 TypeScriptをサーバー上で実行する
  176.   12.3 TypeScriptをブラウザー内で実行する
  177.   12.4 TypeScriptコードをnpmに公開する
  178.   12.5 トリプルスラッシュ・ディレクティブ
  179.    12.5.1 typesディレクティブ
  180.    12.5.2 amd-moduleディレクティブ
  181.   12.6 まとめ
  182.  13章 終わりに
  183.  付録A 型演算子
  184.  付録B 型ユーティリティ
  185.  付録C 宣言の振る舞い
  186.   C.1 それは型を生成するか?
  187.   C.2 それはマージされるか?
  188.  付録D サードパーティーJavaScriptモジュールのための宣言ファイルの書き方
  189.   D.1 エクスポートの種類
  190.    D.1.1 グローバルエクスポート
  191.    D.1.2 ES2015エクスポート
  192.    D.1.3 CommonJSエクスポート
  193.    D.1.4 UMDエクスポート
  194.   D.2 モジュールの拡張
  195.    D.2.1 グローバルな名前空間とインターフェース
  196.    D.2.2 モジュール
  197.  付録E トリプルスラッシュ・ディレクティブ
  198.   E.1 内部ディレクティブ
  199.   E.2 推奨されないディレクティブ
  200.  付録F 安全性に関するTSCコンパイラーフラグ
  201.  付録G TSX
  202.  付録H ESLintとAST
  203.   H.1 TypeScriptプロジェクトでのESLintの利用
  204.    H.1.1 パッケージのインストール
  205.    H.1.2 ESLintの新規導入
  206.    H.1.3 TSLintからの移行
  207.    H.1.4 リントの実行
  208.   H.2 TypeScript向け独自ルールの実装
  209.    H.2.1 実装するルールの仕様
  210.    H.2.2 ESLintとAST
  211.    H.2.3 ルールの実装
  212.    H.2.4 ルールの実行
  213.    H.2.5 自動修正の実装
  214.    H.2.6 自動修正の適用
  215.   H.3 そのほかの場面でのASTの用途
  216.    H.3.1 Language Serviceのプラグイン
  217.    H.3.2 Custom Transformer
  218.   H.4 まとめ
  219.  練習問題の解答
  220.   3章 型について
  221.   4章 関数
  222.   5章 クラスとインターフェース
  223.   6章 高度な型
  224.   7章 エラー処理
  225.   8章 非同期プログラミングと並行、並列処理
  226.   10章 名前空間とモジュール
  227.  奥付

Product information

  • Title: プログラミングTypeScript ―スケールするJavaScriptアプリケーション開発
  • Author(s): Boris Cherny, 今村 謙士, 原 隆文
  • Release date: March 2020
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873119045

You might also like

book

Reactハンズオンラーニング 第2版 ―Webアプリケーション開発のベストプラクティス

by Alex Banks, Eve Porcello, 宮崎 空

Facebookが開発したJavaScriptライブラリ「React」の解説書。2013年にオープンソース化されたReactですが、ここ数年で大きな変更が加えられ、またReactを取り巻くエコシステムも大きく変化しました。本書では実際に動くコンポーネントを作りながら、最新のReactの記法について解説しつつ、最新のツールやライブラリも紹介します。初心者から中上級者まで、Reactの今をすばやく学習することができます。

book

入門 監視 ―モダンなモニタリングのためのデザインパターン

by Mike Julian, 松浦 隼人

本書は、システムのどの部分をどのように監視すべきか、また監視をどのように改善していくべきかについて解説する書籍です。前半で監視のベストプラクティス、デザインパターン/アンチパターンを示して、監視の基本原則を詳しく説明し、後半でフロントエンド、アプリケーション、サーバ、ネットワーク、セキュリティの各テーマで強力な監視の基盤を設計して実装するための方法を示します。監視対象が変化し、システムアーキテクチャが進化する中で、従来から変わらない監視の基本を示しながら、時代に合った監視の実践を解説する本書は、監視についての理解を深めたいエンジニア必携の一冊です。

book

詳解 システム・パフォーマンス 第2版

by Brendan Gregg, 西脇 靖紘, 長尾 高弘

本書は、エンタープライズとクラウド環境を対象としたオペレーティングシステムとアプリケーションのパフォーマンス分析と向上について解説します。 主にLinuxベースのオペレーティングシステムに含まれるツールとその使用例を通じてシステムパフォーマンスを引き出す手法を説明します。システム評価のためのベンチマーク、キャパシティプランニング、ボトルネックの解消について解説しスケーラビリティを制限する要因を発見、分析し、解決する方法を学びます。 第2版では、perf、Ftrace、BPFの解説が加わり、Linuxとクラウドコンピューティングについての説明が充実しました。 システムのパフォーマンスを向上させ、コストを削減し、レイテンシの外れ値を減らすための方法を学ぶ本書はエンジニア必携の一冊です。

book

行動を変えるデザイン ―心理学と行動経済学をプロダクトデザインに活用する

by Stephen Wendel, 武山 政直, 相島 雅樹, 反中 望, 松村 草也

深津貴之氏推薦!「行動経済学、データ分析、サービス設計のエッセンスが高度に統合された行動変容デザインの良書です」 本書は、行動経済学と心理学をもとに、人々の行動、日常習慣を変える“行動変容”を促すプロダクトをデザインするための書籍です。主にヘルスケア(健康管理)、金融(資産管理)など、これまでITプロダクト(サービス、アプリなど)がなかなか使われてこなかった分野を対象に、ユーザーがやりたいと思っていたものの実行できなかった行動の実現を助けるプロダクトを作り出すための、実践的な視点や知識を提供します。