交差型(Intersection Types)と共用体型(Union Types)について
交差型(Intersection Types)と共用体型(Union Types)について
交差型(Intersection Types)
T & U
TとUの両方を満たす型を動的に生成できる
type T = { foo: string }; type U = { bar: number }; type I = T & U; // fooまたはbarのいずれかが未定義の場合はコンパイルエラー const obj: I = { foo: "foo", bar: 123 };
type T = { foo: string }; type U = { bar: number, foo: number }; // fooの型が一致しない場合、fooはnever型となり代入ができずコンパイルエラーとなる type I = T & U; const obj: I = { foo: "foo", bar: 123 };
type A = { a:number }; // 必須 type B = { a?:number }; // 任意 type C1 = A & B; const objC1:C1 = {}; // compile error. type C2 = B & A; const objC2:C2 = {}; // compile error.
共用体型(Union Types)
T | U
TもしくはUである型を動的に生成できる
type T = { foo: string, hoge: number }; type U = { bar: number, hoge: number }; type I = T | U; const obj1: I = { foo: "foo", hoge: 1 }; const obj2: I = { bar: 123, hoge: 1 };