Open2
undefinedをnullに置き換える型パズル
type UndefinedToNullByPrimitive<T> = T extends undefined ? null : T;
type UndefinedToNull<T> = T extends object
? {
[K in keyof T]: UndefinedToNull<T[K]>;
}
: UndefinedToNullByPrimitive<T>;
type A = {
a: undefined;
b: string;
c: {
c_a: undefined;
c_b: number | undefined;
c_c: {
c_c_a: string;
c_c_b: null;
c_c_c: [null, string, undefined, undefined | number, { a: string, b: undefined | string }];
};
};
d: null;
};
type B = string;
type C = undefined;
type D = [null, string, undefined, undefined | number, { a: string, b: undefined | string }];
type A = UndefinedToNull<Hoge>;
// type A = {
// a: null;
// b: string;
// c: {
// c_a: null;
// c_b: number;
// c_c: {
// c_c_a: string;
// c_c_b: null;
// };
// };
// d: null;
// }
type B = UndefinedToNull<Foo>;
// type B = string
type C = UndefinedToNull<Piyo>;
// type C = null
配列が想定できてなかった