export type NestedPartial = { [attr in keyof K]?: K[attr] extends object ? NestedPartial : K[attr] extends object | null ? NestedPartial | null : K[attr] extends object | null | undefined ? NestedPartial | null | undefined : K[attr]; }; export type anyObject = Record; export type normalObject = Record; export type nullableObject = normalObject | null; /** * @deprecated WebStorm's intellisense cannot see real value type when used with `x?.prop` syntax and does not whisper actual props... \ * Straight use of `type | null` yields easier life of a fellow programmer */ export type Nullable = T | null | undefined;