type Fn<Args = any, Return = void> = (...args: Args[]) => Return
type MaybeArray<T> = T | T[]
type DeepPartial<T> = {
[P in keyof T]?: T[P] extends object
? T[P] extends Function // 如果属性是函数,则不继续递归
? T[P]
: DeepPartial<T[P]> // 否则递归应用 DeepPartial
: T[P];
}