From 215a47c19bbb6317915ca8568e19d879d858d73a Mon Sep 17 00:00:00 2001 From: Nicola Krumschmidt Date: Wed, 12 Oct 2022 20:17:08 +0200 Subject: [PATCH] Allow usage of tupels of arbitrary length with DeepPartial (#15947) --- packages/shared/src/types/misc.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/shared/src/types/misc.ts b/packages/shared/src/types/misc.ts index 9a3050806e..1b6fc11d1d 100644 --- a/packages/shared/src/types/misc.ts +++ b/packages/shared/src/types/misc.ts @@ -1,16 +1,12 @@ type Primitive = undefined | null | string | number | boolean | bigint | symbol; type Builtin = Primitive | Date | Error | RegExp | ((...args: any[]) => unknown); -type Tuple = - | [unknown] - | [unknown, unknown] - | [unknown, unknown, unknown] - | [unknown, unknown, unknown, unknown] - | [unknown, unknown, unknown, unknown, unknown]; export type DeepPartial = T extends Builtin ? T - : T extends Tuple - ? { [K in keyof T]?: DeepPartial } + : T extends [] + ? [] + : T extends [infer U, ...infer R] + ? [DeepPartial, ...DeepPartial] : T extends Array ? Array> : T extends ReadonlyArray