DeepPartial<T>
DeepPartial<
T> =Textendsobject?{ [P in keyof T]?: DeepPartial<T[P]> }:T
Makes all properties of T optional recursively, at every depth level.
Unlike TypeScript's built-in Partial<T> which only affects the first level,
DeepPartial<T> makes nested object properties optional as well.
Type Parametersโ
T: Tโ
The type to make deeply partial
Sinceโ
2.0.0
Exampleโ
type Config = {
server: {
host: string;
port: number;
};
debug: boolean;
};
// Partial`<Config>` = { server?: { host: string; port: number }; debug?: boolean }
// โ ๏ธ server.host and server.port are still required!
// DeepPartial`<Config>` = { server?: { host?: string; port?: number }; debug?: boolean }
// โ
Everything is optional at all levels
function updateConfig(patch: `DeepPartial<Config>`) {
// Can pass just { server: { port: 8080 } }
}