Book description
プログラミング言語TypeScriptの解説書。TypeScriptの型に関する基礎的な内容からその応用、エラー処理の手法、非同期プログラミング、各種フレームワークの利用法、既存のJavaScriptプロジェクトのTypeScript移行の方法まで、言語全般を総合的に解説します。本書全体を通じて、TypeScriptの洗練された型システムを最大限活用するために、コードをどのように記述すべきか、なぜそうすべきかを学べます。
Table of contents
- 大扉
- 原書大扉
- クレジット
- 献辞
- 賞賛の声
- 監訳者まえがき
- まえがき
- 本書の構成
- スタイル
- 表記上のルール
- サンプルコードの使用について
- 意見と質問
- 謝辞
- 1章 イントロダクション
- 2章 TypeScript:全体像
- 2.1 コンパイラー
- 2.2 型システム
- 2.2.1 TypeScript対JavaScript
- 2.3 コードエディターのセットアップ
- 2.3.1 tsconfig.json
- 2.3.2 tslint.json
- 2.4 index.ts
- 2.5 練習問題
- 3章 型について
- 3.1 型についての議論
- 3.2 型の初歩
- 3.2.1 any
- 3.2.2 unknown
- 3.2.3 boolean
- 3.2.4 number
- 3.2.5 bigint
- 3.2.6 string
- 3.2.7 symbol
- 3.2.8 オブジェクト
- 3.2.9 型エイリアス、合併、交差
- 3.2.10 配列
- 3.2.11 タプル
- 3.2.12 null、undefined、void、never
- 3.2.13 列挙型
- 3.3 まとめ
- 3.4 練習問題
- 4章 関数
- 4.1 関数の宣言と呼び出し
- 4.1.1 オプションパラメーターとデフォルトパラメーター
- 4.1.2 レストパラメーター
- 4.1.3 call、apply、bind
- 4.1.4 thisの型付け
- 4.1.5 ジェネレーター
- 4.1.6 イテレーター
- 4.1.7 呼び出しシグネチャ
- 4.1.8 文脈的型付け
- 4.1.9 オーバーロードされた関数の型
- 4.2 ポリモーフィズム
- 4.2.1 ジェネリックはいつバインドされるか?
- 4.2.2 ジェネリックはどこで宣言できるか?
- 4.2.3 ジェネリックの型推論
- 4.2.4 ジェネリック型エイリアス
- 4.2.5 制限付きポリモーフィズム
- 4.2.6 ジェネリック型のデフォルトの型
- 4.3 型駆動開発
- 4.4 まとめ
- 4.5 練習問題
- 5章 クラスとインターフェース
- 5.1 クラスと継承
- 5.2 super
- 5.3 戻り値の型としてthisを使用する
- 5.4 インターフェース
- 5.4.1 宣言のマージ
- 5.4.2 実装
- 5.4.3 「インターフェースの実装」対「抽象クラスの拡張」
- 5.5 クラスは構造的に型付けされる
- 5.6 クラスは値と型の両方を宣言する
- 5.7 ポリモーフィズム
- 5.8 ミックスイン
- 5.9 デコレーター
- 5.10 finalクラスをシミュレートする
- 5.11 デザインパターン
- 5.11.1 ファクトリーパターン
- 5.11.2 ビルダーパターン
- 5.12 まとめ
- 5.13 練習問題
- 6章 高度な型
- 6.1 型の間の関係
- 6.1.1 サブタイプとスーパータイプ
- 6.1.2 変性
- 6.1.3 割り当て可能性
- 6.1.4 型の拡大
- 6.1.5 型の絞り込み
- 6.2 完全性
- 6.3 高度なオブジェクト型
- 6.3.1 オブジェクト型についての型演算子
- 6.3.2 レコード型
- 6.3.3 マップ型
- 6.3.4 コンパニオンオブジェクトパターン
- 6.4 関数にまつわる高度な型
- 6.4.1 タプルについての型推論の改善
- 6.4.2 ユーザー定義型ガード
- 6.5 条件型
- 6.5.1 分配条件型
- 6.5.2 inferキーワード
- 6.5.3 組み込みの条件型
- 6.6 エスケープハッチ
- 6.6.1 型アサーション
- 6.6.2 非nullアサーション
- 6.6.3 明確な割り当てアサーション
- 6.7 名前的型をシミュレートする
- 6.8 プロトタイプを安全に拡張する
- 6.9 まとめ
- 6.10 練習問題
- 7章 エラー処理
- 7.1 nullを返す
- 7.2 例外をスローする
- 7.3 例外を返す
- 7.4 Option型
- 7.5 まとめ
- 7.6 練習問題
- 8章 非同期プログラミングと並行、並列処理
- 8.1 JavaScriptのイベントループ
- 8.2 コールバックの処理
- 8.3 プロミスを使って健全さを取り戻す
- 8.4 asyncとawait
- 8.5 非同期ストリーム
- 8.5.1 イベントエミッター
- 8.6 型安全なマルチスレッディング
- 8.6.1 Web Worker(ブラウザー)
- 8.6.2 子プロセス(Node.js)*8
- 8.7 まとめ
- 8.8 練習問題
- 9章 フロントエンドとバックエンドのフレームワーク
- 9.1 フロントエンドのフレームワーク
- 9.1.1 React
- 9.1.2 Angular 6/7
- 9.2 型安全なAPI
- 9.3 バックエンドのフレームワーク
- 9.4 まとめ
- 10章 名前空間とモジュール
- 10.1 JavaScriptモジュールの簡単な歴史
- 10.2 インポート、エクスポート
- 10.2.1 動的インポート
- 10.2.2 CommonJSおよびAMDコードの使用
- 10.2.3 モジュールモードとスクリプトモード
- 10.3 名前空間
- 10.3.1 競合
- 10.3.2 コンパイルされた出力結果
- 10.4 宣言のマージ
- 10.5 まとめ
- 10.6 練習問題
- 11章 JavaScriptとの相互運用
- 11.1 型宣言
- 11.1.1 アンビエント変数宣言
- 11.1.2 アンビエント型宣言
- 11.1.3 アンビエントモジュール宣言
- 11.2 JavaScriptからTypeScriptへの漸進的な移行
- 11.2.1 ステップ1:TSCを追加する
- 11.2.2 ステップ2a:JavaScriptの型チェックを有効にする(オプション)
- 11.2.3 ステップ2b:JSDocアノテーションを追加する(オプション)
- 11.2.4 ステップ3:ファイルを.tsにリネームする
- 11.2.5 ステップ4:厳格にする
- 11.3 JavaScriptの型の探索
- 11.3.1 JavaScriptファイルが同一プロジェクト内に存在する場合
- 11.3.2 サードパーティーのJavaScriptモジュールを利用する場合
- 11.4 サードパーティーJavaScriptの使用
- 11.4.1 型宣言を備えているJavaScript
- 11.4.2 DefinitelyTypedに型宣言を持つJavaScript
- 11.4.3 DefinitelyTypedに型宣言を持たないJavaScript
- 11.5 まとめ
- 12章 TypeScriptのビルドと実行
- 12.1 TypeScriptプロジェクトのビルド
- 12.1.1 プロジェクトのレイアウト
- 12.1.2 成果物
- 12.1.3 コンパイルターゲットの指定
- 12.1.4 ソースマップを有効にする
- 12.1.5 プロジェクト参照
- 12.1.6 エラーの監視
- 12.2 TypeScriptをサーバー上で実行する
- 12.3 TypeScriptをブラウザー内で実行する
- 12.4 TypeScriptコードをnpmに公開する
- 12.5 トリプルスラッシュ・ディレクティブ
- 12.5.1 typesディレクティブ
- 12.5.2 amd-moduleディレクティブ
- 12.6 まとめ
- 13章 終わりに
- 付録A 型演算子
- 付録B 型ユーティリティ
- 付録C 宣言の振る舞い
- C.1 それは型を生成するか?
- C.2 それはマージされるか?
- 付録D サードパーティーJavaScriptモジュールのための宣言ファイルの書き方
- D.1 エクスポートの種類
- D.1.1 グローバルエクスポート
- D.1.2 ES2015エクスポート
- D.1.3 CommonJSエクスポート
- D.1.4 UMDエクスポート
- D.2 モジュールの拡張
- D.2.1 グローバルな名前空間とインターフェース
- D.2.2 モジュール
- 付録E トリプルスラッシュ・ディレクティブ
- E.1 内部ディレクティブ
- E.2 推奨されないディレクティブ
- 付録F 安全性に関するTSCコンパイラーフラグ
- 付録G TSX
- 付録H ESLintとAST
- H.1 TypeScriptプロジェクトでのESLintの利用
- H.1.1 パッケージのインストール
- H.1.2 ESLintの新規導入
- H.1.3 TSLintからの移行
- H.1.4 リントの実行
- H.2 TypeScript向け独自ルールの実装
- H.2.1 実装するルールの仕様
- H.2.2 ESLintとAST
- H.2.3 ルールの実装
- H.2.4 ルールの実行
- H.2.5 自動修正の実装
- H.2.6 自動修正の適用
- H.3 そのほかの場面でのASTの用途
- H.3.1 Language Serviceのプラグイン
- H.3.2 Custom Transformer
- H.4 まとめ
- 練習問題の解答
- 3章 型について
- 4章 関数
- 5章 クラスとインターフェース
- 6章 高度な型
- 7章 エラー処理
- 8章 非同期プログラミングと並行、並列処理
- 10章 名前空間とモジュール
- 奥付
Product information
- Title: プログラミングTypeScript ―スケールするJavaScriptアプリケーション開発
- Author(s):
- Release date: March 2020
- Publisher(s): O'Reilly Japan, Inc.
- ISBN: 9784873119045
You might also like
book
詳解 システム・パフォーマンス 第2版
本書は、エンタープライズとクラウド環境を対象としたオペレーティングシステムとアプリケーションのパフォーマンス分析と向上について解説します。 主にLinuxベースのオペレーティングシステムに含まれるツールとその使用例を通じてシステムパフォーマンスを引き出す手法を説明します。システム評価のためのベンチマーク、キャパシティプランニング、ボトルネックの解消について解説しスケーラビリティを制限する要因を発見、分析し、解決する方法を学びます。 第2版では、perf、Ftrace、BPFの解説が加わり、Linuxとクラウドコンピューティングについての説明が充実しました。 システムのパフォーマンスを向上させ、コストを削減し、レイテンシの外れ値を減らすための方法を学ぶ本書はエンジニア必携の一冊です。
book
行動を変えるデザイン ―心理学と行動経済学をプロダクトデザインに活用する
深津貴之氏推薦!「行動経済学、データ分析、サービス設計のエッセンスが高度に統合された行動変容デザインの良書です」 本書は、行動経済学と心理学をもとに、人々の行動、日常習慣を変える“行動変容”を促すプロダクトをデザインするための書籍です。主にヘルスケア(健康管理)、金融(資産管理)など、これまでITプロダクト(サービス、アプリなど)がなかなか使われてこなかった分野を対象に、ユーザーがやりたいと思っていたものの実行できなかった行動の実現を助けるプロダクトを作り出すための、実践的な視点や知識を提供します。
book
初めてのGraphQL ―Webサービスを作って学ぶ新世代API
今日では多くのWebサービスがRESTアーキテクチャスタイルで実装されています。RESTは2000年にフィールディングの論文で提唱された後に爆発的に普及し洗練されてきました。一方で、本書で紹介するGraphQLは2015年にFacebookによって公開されたRESTとは異なるアプローチのアーキテクチャです。GraphQLの最大の特徴はクエリ言語を用いてデータを操作する点です。クエリ言語の表現力の高さによりクライアントは本当に必要なリクエストを送ることができます。本書ではGraphQLの概要とGraphQLを用いたWebサービスの開発方法を実装例に沿って紹介します。認証やファイルアップロードといった実践的なトピックまで踏み込んだGraphQLの実用的な入門書です。
book
scikit-learn、Keras、TensorFlowによる実践機械学習 第2版
本書はコードを動かしながら学び、機械学習が使えるようになることを目的とした書籍です。現実的な問題を出し、サンプルデータを示しながら、機械学習で問題を解決に導くまでの一連の手法を体系立てて解説します。深層学習以外の機械学習にはscikit-learnを使い、機械学習プロジェクトの流れ、データからモデルを学習する方法、データの処理・クリーニングなどの基礎から、特徴量の選択や過学習、データの次元削減など応用までを学びます。深層学習にはTensorFlowとKerasを使い、ニューラルネットワークの構築と訓練、ニューラルネットワークアーキテクチャ、深層学習や強化学習、さらにTensorFlowの分散処理のメカニズムや実装までを幅広く解説します。