型の計算

用語・記法 TypeScript 備考
<:, $`\preceq, \succeq`$ extends 印象が逆
型の世界 (特になし) すべての型の集合
型カインド (特になし) 型の集合
型ファミリー (特になし)
パイ型 写像的型〈Mapped type〉 部分関数の空間
シグマ型 ユニオン型 合併と直和
関数型、指数型 アロー型
  • 型の世界〈world of types | type world〉は型の順序関係(構造的部分型の関係)で束になる。
  • 直積は合併に対して分配する。
  • 共通部分も合併に対して分配する。
  • 条件付き型表現も合併に対して分配するように拡張する。
  • インスタンスも型だと思える(単元型)
  • あらゆる有限集合〈有限型〉は型
  • 計算のエラー値にneverを返す習慣。
  • 真偽値は null, never を使う(約束)。
  • ブーリアン型カインドは型述語で定義できる。型フィルターでは定義できない。

例題:

  • 用意した名前(文字列の配列)とオブジェクト型(T <: object な型)から、プロパティ名を配列インデックスに変えた配列型を作る。
  • その逆
  • 配列型やオブジェクト型の成分型(項目型、プロパティ型)をnull許容にする。
  • 上記を再帰的に行う。構造再帰的。
  • オブジェクト型に"_id" フィールドを付ける。
  • 型の差を計算する。それにより 補型=補集合 を求める。