プログラミング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

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

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

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

book

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

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

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

book

初めてのGraphQL ―Webサービスを作って学ぶ新世代API

by Eve Porcello, Alex Banks, 尾崎 沙耶, あんどうやすし

今日では多くのWebサービスがRESTアーキテクチャスタイルで実装されています。RESTは2000年にフィールディングの論文で提唱された後に爆発的に普及し洗練されてきました。一方で、本書で紹介するGraphQLは2015年にFacebookによって公開されたRESTとは異なるアプローチのアーキテクチャです。GraphQLの最大の特徴はクエリ言語を用いてデータを操作する点です。クエリ言語の表現力の高さによりクライアントは本当に必要なリクエストを送ることができます。本書ではGraphQLの概要とGraphQLを用いたWebサービスの開発方法を実装例に沿って紹介します。認証やファイルアップロードといった実践的なトピックまで踏み込んだGraphQLの実用的な入門書です。

book

scikit-learn、Keras、TensorFlowによる実践機械学習 第2版

by Aurélien Géron, 下田 倫大, 長尾 高弘

本書はコードを動かしながら学び、機械学習が使えるようになることを目的とした書籍です。現実的な問題を出し、サンプルデータを示しながら、機械学習で問題を解決に導くまでの一連の手法を体系立てて解説します。深層学習以外の機械学習にはscikit-learnを使い、機械学習プロジェクトの流れ、データからモデルを学習する方法、データの処理・クリーニングなどの基礎から、特徴量の選択や過学習、データの次元削減など応用までを学びます。深層学習にはTensorFlowとKerasを使い、ニューラルネットワークの構築と訓練、ニューラルネットワークアーキテクチャ、深層学習や強化学習、さらにTensorFlowの分散処理のメカニズムや実装までを幅広く解説します。