用語・記法 | TypeScript | 備考 |
---|---|---|
<:, $`\preceq, \succeq`$ | extends | 印象が逆 |
型の世界 | (特になし) | すべての型の集合 |
型カインド | (特になし) | 型の集合 |
型ファミリー | (特になし) | |
パイ型 | 写像的型〈Mapped type〉 | 部分関数の空間 |
シグマ型 | ユニオン型 | 合併と直和 |
関数型、指数型 | アロー型 |
- 型の世界〈world of types | type world〉は型の順序関係(構造的部分型の関係)で束になる。
- 直積は合併に対して分配する。
- 共通部分も合併に対して分配する。
- 条件付き型表現も合併に対して分配するように拡張する。
- インスタンスも型だと思える(単元型)
- あらゆる有限集合〈有限型〉は型
- 計算のエラー値にneverを返す習慣。
- 真偽値は null, never を使う(約束)。
- ブーリアン型カインドは型述語で定義できる。型フィルターでは定義できない。
例題:
- 用意した名前(文字列の配列)とオブジェクト型(T <: object な型)から、プロパティ名を配列インデックスに変えた配列型を作る。
- その逆
- 配列型やオブジェクト型の成分型(項目型、プロパティ型)をnull許容にする。
- 上記を再帰的に行う。構造再帰的。
- オブジェクト型に"_id" フィールドを付ける。
- 型の差を計算する。それにより 補型=補集合 を求める。