書籍概要

JavaScriptプログラマーのためのTypeScript厳選ガイド
JavaScriptプロジェクトを型安全で堅牢にする書き方を理解する

著者
発売日
更新日

概要

本書は,TypeScriptの入門書です。TypeScriptは,JavaScriptに静的型を追加したプログラミング言語です。TypeScriptの構文はJavaScriptの構文のほとんどをそのまま利用しており,ほとんどそのままJavaScriptに変換して実行するため,JavaScriptと同等のことができます。そして,静的型付けは,正しく動作し,しかも読みやすいプログラムを書くための助けになります。

現在,私たちは「TypeScriptこそがモダンJavaScript」という新たな時代に立ち会っています。Webの発展とともにさまざまなWeb技術がJavaScriptの上に構築されていき,JavaScriptの適用範囲も広がりつつあります。その中でTypeScriptは,JavaScriptの代替言語として,その存在感を示しています。

本書では,TypeScriptを「すべてのJavaScriptプロジェクトにとって導入する価値のある,JavaScriptの一方言」と位置付けています。この「方言」とは,ここでは「JavaScriptの知識を100%活かせるが,表面的にはJavaScriptとは少しだけ異なる言語」という意味です。TypeScriptとJavaScriptの適用範囲はほとんど一致するからです。JavaScriptプロジェクトの実装言語としてTypeScriptを採用することで,生産性が向上し,より安定したソフトウェア開発を行えるでしょう。

第1章では,TypeScriptについて概念的な話をしています。第2章では,TypeScriptコンパイラの基本的な使い方を紹介しています。第3章はES2015+について,主にTypeScript的な文脈から解説をしています。続く第4章,第5章ではTypeScriptの型システムについて基礎から応用まで解説し,第6章ではモジュールについて簡潔に触れます。

本書はすでにある程度JavaScriptに習熟したプログラマーを対象にしています。また,bashなどの基本的なコマンドラインインターフェイスや,gitとGitHubについても最低限の知識はあるものとします。最初から通読することを念頭に置いて章を立てていますが,TypeScriptの知識が少しある場合や,JavaScriptについて熟知している場合は,第4章と第5章を集中的に読むのでもよいでしょう。

こんな方におすすめ

  • JavaScriptを仕事で使っているが,これからTypeScriptを現場で使いこなせるようになりたい方

サンプル

目次

第1章 TypeScriptとは何か

  • 1-1 なぜTypeScriptが注目されているのか
  • 1-2 TypeScriptが開発された背景
  • 1-3 TypeScriptで生産性が上がる理由
  • 1-4 TypeScript+JavaScriptという二重構造
  • 1-5 TypeScriptのエコシステム

第2章 TypeScriptコンパイラの基礎

  • 2-1 nodeコマンドをインストールする
    • COLUMN Node.jsとブラウザ以外のJavaScriptランタイム
    • Windows
    • macOS - Homebrew
  • 2-2 tscコマンドをインストールする
    • プロジェクトディレクトリを用意する
    • tscコマンドをプロジェクトにインストールする
    • tsc --initでtsconfig.jsonを生成する
  • 2-3 tscコマンドでTypeScriptのコードをコンパイルする
  • 2-4 tsimpコマンドでTypeScriptのコードをコンパイルせずに実行する
  • 2-5 tsconfig.jsonについて知っておくべきこと
    • compilerOptions.target - コンパイル先のESバージョン
    • compilerOptions.lib - 標準ライブラリの型定義
    • COLUMN ダウンレベルとポリフィル
  • 2-6 Visual Studio CodeでTypeScript言語サービスを利用する
  • 2-7 Visual Studio Codeからスクリプトを実行できるようにする
    • COLUMN JSONとJSONCの違い
  • 2-8 本書のサンプルコードについて

第3章 ES2015+の基本構文

  • 3-1 変数宣言
    • varによる変数宣言の復習
    • ブロックスコープの変数宣言let
    • ブロックスコープ宣言const
    • TypeScriptにおけるdeclare var宣言
  • 3-2 クラス
    • クラスの継承
    • 第一級オブジェクトとしてのクラス
  • 3-3 文字列
    • JavaScriptの文字列リテラルの復習
    • テンプレート文字列
    • タグ付きテンプレート
    • TypeScriptにおける文字列リテラル型
  • 3-4 プリミティブ値
    • 多倍長整数 / bigint
    • シンボル / symbol
  • 3-5 配列とタプル
    • コンストラクタ代替メソッド
    • タプル
    • 配列
  • 3-6 オブジェクト
    • オブジェクトリテラル
    • オブジェクトリテラル型
    • プロパティ速記法
  • 3-7 グローバルオブジェクト
  • 3-8 関数とメソッド
    • アロー演算子による無名関数
    • ジェネレータ関数
    • デフォルト引数
    • 可変長引数
  • 3-9 スプレッド構文
    • 関数の引数に対するスプレッド構文
    • 配列リテラルに対するスプレッド構文 [...a]
    • オブジェクトリテラルに対するスプレッド構文 {...o}
  • 3-10 分割代入
  • 3-11 条件分岐
    • if文
  • 3-12 for-ofループ文とイテレータ
  • 3-13 async/awaitによる非同期処理

第4章 型演算の基本

  • 4-1 JavaScriptの動的型の概要
  • 4-2 TypeScriptの静的型の概要
    • 構造型 / Structural Typing
    • 公称型 / Nominal Typing
    • 漸近的型付け / Gradual Typing
  • 4-3 any型
  • 4-4 unknown型
  • 4-5 void型
  • 4-6 never型
  • 4-7 オブジェクト型
    • オブジェクトリテラル的な構文による型定義
    • interface宣言による型定義
    • オブジェクト型におけるメソッドの定義
  • 4-8 クラス型
    • implements句
  • 4-9 型を引数として受け取るジェネリクス
    • コンストラクタシグネチャ
  • 4-10 共用体型 / Union Types
  • 4-11 交差型 / Intersection Types
  • 4-12 余剰プロパティチェック / Excess Property Checks
  • 4-13 ナローイングと型ガード
  • 4-14 型アサーションのas演算子
    • COLUMN 暗黙の型アサーション
  • 4-15 as const演算子
  • 4-16 non-nullアサーション演算子
  • 4-17 ユーザー値技の型ガードを実装する述語関数
  • 4-18 ナローイングを起こすためのアサーション関数
  • 4-19 satisfies 演算子
    • implements句とsatisfies演算子の比較

第5章 高度な型演算

  • 5-1 型関数と型演算子
    • 型関数のためのユーティリティ
    • 条件付き型 / Conditional Types
    • 条件付き型の分配 / Distributive Conditional Types
    • T[P] - 型のプロパティ参照
    • infer型演算子
  • 5-2 共用体型と交差型
  • 5-3 テンプレートリテラル型
    • テンプレート文字列に従って一定の規則を持つ文字列型を作る
    • テンプレートリテラル型とinfer型演算子で文字列リテラル型の中身を解析する
  • 5-4 組み込み型関数
    • Record<KeyType, ValueType> - 連想配列として使うオブジェクト型を生成する
    • ReturnType<Fn> - 関数の戻り値を取り出す
    • Pick<T, K> - オブジェクト型から一部のプロパティを取り出す
    • Omit<T, K> - オブジェクト型から一部のプロパティを除外する
    • Partial<T> - オブジェクト型のプロパティをすべて省略可能にする
  • 5-5 型演算活用事例 - ルーティングパスの文字列型からパラメータを取り出す型関数ParamsOf<S>

第6章 モジュールシステム

  • 6-1 importで拡張子なし
  • 6-2 importで拡張子に.mjs
  • 6-3 importで拡張子に.mts

サポート

現在サポート情報はありません。

商品一覧