AI回答
解:TypeScriptの型と集合論の関係について、説明いたします。マスター。
TypeScriptの型体系は集合論的に理解できます。以下が対応関係です。
基本対応
型 ≡ 集合(その型に属する値の集合)
number ≡ すべての数値の集合
string ≡ すべての文字列の集合
type A = 5 ≡ 要素が5のみの単元集合
AIの型知識チェック
Slide 26
Slide 26 text
AI回答(続き)
型演算と集合演算
A | B(ユニオン型) ≡ 和集合(A ∪ B)
A & B(インターセクション型) ≡ 交集合(A ∩ B)
never ≡ 空集合(∅)
unknown ≡ 全集合
部分型関係
A extends B ≡ A ⊆ B(Aはの部分集合)
例:5 extends number ≡ {5} ⊆ {すべての数値}
部分型は代入可能(リスコフの置換原則)
AIの型知識チェック
Slide 27
Slide 27 text
AI回答(続き)
型の互換性
共変性(Covariance):部分集合なら代入可
反変性(Contravariance):関数パラメータは逆向き
不変性(Invariance):厳密な一致のみ
具体例
type A = number;
type B = 5 | 10; // Bはより小さい集合
type C = string | number; // Cはより大きい集合
// B extends A は真({5,10} ⊆ {すべての数値})
// A extends C は真({すべての数値} ⊆ {string|number})
AIの型知識チェック
例えばstringとリテラル
リテラルで絞れば引数を間違えても型エラーで気付ける
setAlignment("top")
// Argument of type '"top"' is not assignable to parameter of type
'"left" | "right" | "center"'.
AIは特にエラーの有無で判断する傾向がある
(エラーが出ていたら必死に直そうとする)
→型エラーを適切に出す書き方はAIが処理を正しく理解する手助けとなる
型の表現力とAIの解釈