UnionからUnionへの型レベルmap
これは、Unionから、何か計算を施したUnionへのmapと考えると良いmrsekut.icon
通常のmapは、[a,b,c]→[f a, f b, f c]だが、
この場合は、a | b | c → f a | f b | f cというイメージ
U extends U ? f : neverとしたとき
例: Union型を、配列のUnion型に変換する
code:ts
type ArrayUnion<U> = U extends U ? U[] : never;
使用例
code:ts
type case1 = ArrayUnion<'a'|'b'>; // "a"[] | "b"[]
type case2 = ArrayUnion<string>; // string[]
type case3 = ArrayUnion<string | number>; // string[] | number[]
例: recordのUnion型から、keyのUnionに変換する
code:ts
type KeyofUnion<T> = T extends T ? keyof T : never;
使用例
code:ts
type A = { foo: string; };
type B = { bar: number; };
type Keys = KeyofUnion<A | B>; // 'foo' | 'bar';
例