From 046d4b831404689f5bd4d971e68f8e168fbdba04 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Wed, 1 Feb 2023 08:42:51 -0800 Subject: [PATCH] Improve createInstance types --- src/common/services/Services.ts | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/common/services/Services.ts b/src/common/services/Services.ts index 2f97f2d7..b2009690 100644 --- a/src/common/services/Services.ts +++ b/src/common/services/Services.ts @@ -132,17 +132,9 @@ export interface IBrandedService { serviceBrand: undefined; } -type GetLeadingNonServiceArgs = - Args extends [...IBrandedService[]] ? [] - : Args extends [infer A1, ...IBrandedService[]] ? [A1] - : Args extends [infer A1, infer A2, ...IBrandedService[]] ? [A1, A2] - : Args extends [infer A1, infer A2, infer A3, ...IBrandedService[]] ? [A1, A2, A3] - : Args extends [infer A1, infer A2, infer A3, infer A4, ...IBrandedService[]] ? [A1, A2, A3, A4] - : Args extends [infer A1, infer A2, infer A3, infer A4, infer A5, ...IBrandedService[]] ? [A1, A2, A3, A4, A5] - : Args extends [infer A1, infer A2, infer A3, infer A4, infer A5, infer A6, ...IBrandedService[]] ? [A1, A2, A3, A4, A5, A6] - : Args extends [infer A1, infer A2, infer A3, infer A4, infer A5, infer A6, infer A7, ...IBrandedService[]] ? [A1, A2, A3, A4, A5, A6, A7] - : Args extends [infer A1, infer A2, infer A3, infer A4, infer A5, infer A6, infer A7, infer A8, ...IBrandedService[]] ? [A1, A2, A3, A4, A5, A6, A7, A8] - : never; +type GetLeadingNonServiceArgs = TArgs extends [] ? [] + : TArgs extends [...infer TFirst, infer TLast] ? TLast extends IBrandedService ? GetLeadingNonServiceArgs : TArgs + : never; export const IInstantiationService = createDecorator('InstantiationService'); export interface IInstantiationService {