use Partial in nested property with typescript
You can pretty easily define your own RecursivePartial
type, which will make all properties, included nested ones, optional:
type RecursivePartial<T> = {
[P in keyof T]?: RecursivePartial<T[P]>;
};
If you only want some of your properties to be partial, then you can use this with an intersection and Pick
:
type PartialExcept<T, K extends keyof T> = RecursivePartial<T> & Pick<T, K>;
That would make everything optional except for the keys specified in the K
parameter.
This is possible, you can create a 'deep' partial type as followed:
type DeepPartial<T> = {
[P in keyof T]?: DeepPartial<T[P]>;
};
Which can be used as followed
const state: DeepPartial<State> = {
two: {
three: {
four: '4'
}
}
}