From 1303e7765594f5f5deded1ef76e4c047be7b3aee Mon Sep 17 00:00:00 2001 From: Skillz4Killz <23035000+Skillz4Killz@users.noreply.github.com> Date: Tue, 22 Mar 2022 12:51:02 +0000 Subject: [PATCH] fix: optionalize handle arrays better. Thx yui --- types/shared.ts | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/types/shared.ts b/types/shared.ts index 200230443..15106125b 100644 --- a/types/shared.ts +++ b/types/shared.ts @@ -1311,16 +1311,23 @@ export type KeysWithUndefined = { : never; }[keyof T]; -export type Optionalize = T extends Collection ? T : T extends object ? Id< - & { - [K in KeysWithUndefined]?: T[K] extends Collection ? T[K] : Optionalize; - } - & { - [K in Exclude>]: T[K] extends object ? {} extends Pick ? T[K] - : T[K] extends Collection ? T[K] - : T[K] extends unknown[] ? T[K] - : Optionalize - : T[K]; - } -> -: T; +export type Optionalize = + // Collections don't need optionalizing + T extends Collection ? T + // If an array only optionalize objects in arrays + : T extends unknown[] ? T[number] extends Record ? Array> + : T + // Specific optionalizing of {} go here + : T extends object ? Id< + & { + [K in KeysWithUndefined]?: T[K] extends Collection ? T[K] : Optionalize; + } + & { + [K in Exclude>]: T[K] extends object ? {} extends Pick ? T[K] + : T[K] extends Collection ? T[K] + : T[K] extends unknown[] ? T[K] + : Optionalize + : T[K]; + } + > + : T;