⚙️
TypeScriptのPartialを再帰的にするやつ。
やりたいこと
type T1 = {
a: {
a1: string;
a2: number;
};
b: {
b1: string;
b2: number;
}[];
};
type T2: DeepPartial<T1>;
const t2: T2 = {
a: {
a2: "1",
},
b: [
{
b2: 1
}
],
};
解決
type DeepPartial<T> = {
[P in keyof T]?: T[P] extends Array<infer U>
? Array<DeepPartial<U>>
: T[P] extends ReadonlyArray<infer UU>
? ReadonlyArray<DeepPartial<UU>>
: DeepPartial<T[P]>;
};
地道にタイプを判定しましょう。
なんかもっとうまく書けるきがするな・・・。
Discussion