如何输入“mergeDeepRight”
How to type input to `mergeDeepRight`
我有功能
const updateStoreMerge = (value: PartialRecursive<StoreType>): StoreType => updateStore(s => mergeDeepRight(s, value));
如何打字? Value
应该只是 StoreType
的子集。我想要部分类似的东西,但递归地将可空性赋予所有属性。
type PropsThatAreObjects<T, K extends keyof T> = K extends keyof T ? T[K] extends object ? K : never : never;
type PartialAll<T> = {
[K in PropsThatAreObjects<T, keyof T>]?: PartialAll<T[K]> &
[K in keyof T except the ones in PropsThatAreObjects<T, keyof T>]?: T<K>
};
我写这个有问题
[K in keyof T except the ones in PropsThatAreObjects<T, keyof T>]?: T<K>
非常感谢:)
在我看来 PartialAll
(或 PartialRecursive
)可以简化为:
type PartialAll<T> = T extends object ? { [K in keyof T]?: PartialAll<T[K]> } : T;
我有功能
const updateStoreMerge = (value: PartialRecursive<StoreType>): StoreType => updateStore(s => mergeDeepRight(s, value));
如何打字? Value
应该只是 StoreType
的子集。我想要部分类似的东西,但递归地将可空性赋予所有属性。
type PropsThatAreObjects<T, K extends keyof T> = K extends keyof T ? T[K] extends object ? K : never : never;
type PartialAll<T> = {
[K in PropsThatAreObjects<T, keyof T>]?: PartialAll<T[K]> &
[K in keyof T except the ones in PropsThatAreObjects<T, keyof T>]?: T<K>
};
我写这个有问题
[K in keyof T except the ones in PropsThatAreObjects<T, keyof T>]?: T<K>
非常感谢:)
在我看来 PartialAll
(或 PartialRecursive
)可以简化为:
type PartialAll<T> = T extends object ? { [K in keyof T]?: PartialAll<T[K]> } : T;