can-can-word-bug
Version:
can-can-word-bug 是一个 TS 编写的工具库
22 lines (21 loc) • 491 B
TypeScript
/**
* Required 泛型深度化
* @example
* type Person = {
* name?: string
* address?: {
* country?: string
* }
* }
* type PersonRequired = DeepRequired<Person>;
* // {
* // name: string
* // address: {
* // country: string
* // }
* // }
*/
type DeepRequired<T> = {
[P in keyof T]-?: T[P] extends (infer U)[] ? DeepRequired<U>[] : T[P] extends ReadonlyArray<infer U> ? ReadonlyArray<DeepRequired<U>> : DeepRequired<T[P]>;
};
export default DeepRequired;