type DeepPartial<T> = T extends Function
? T
: T extends object
? { [P in keyof T]?: DeepPartial<T[P]> }
: T;
type PartialedWindow = DeepPartial<Window>; // 现在window 上所有属性都变成了可选啦
type DeepPartial<T> = T extends Function
? T
: T extends object
? { [P in keyof T]?: DeepPartial<T[P]> }
: T;
type PartialedWindow = DeepPartial<Window>; // 现在window 上所有属性都变成了可选啦