-
Notifications
You must be signed in to change notification settings - Fork 38.9k
Improve definition GetLeadingNonServiceArgs to keep parameter names #151203
Copy link
Copy link
Closed
Labels
editor-coreEditor basic functionalityEditor basic functionalityengineeringVS Code - Build / issue tracking / etc.VS Code - Build / issue tracking / etc.insiders-releasedPatch has been released in VS Code InsidersPatch has been released in VS Code Insiders
Milestone
Description
This is the current definition of GetLeadingNonServiceArgs:
type GetLeadingNonServiceArgs<Args> =
Args extends [...BrandedService[]] ? []
: Args extends [infer A, ...BrandedService[]] ? [A]
: Args extends [infer A, ...infer R] ? [A, ...GetLeadingNonServiceArgs<R>]
: never;Unfortunately, it loses the names of the parameters:
However, if we change the definition to this:
type GetLeadingNonServiceArgs<TArgs extends any[]> =
TArgs extends [] ? []
: TArgs extends [...infer TFirst, infer TLast] ? TLast extends BrandedService ? GetLeadingNonServiceArgs2<TFirst> : TArgs
: never;The parameter names are kept:
I don't know how this affects type-checking performance though.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
editor-coreEditor basic functionalityEditor basic functionalityengineeringVS Code - Build / issue tracking / etc.VS Code - Build / issue tracking / etc.insiders-releasedPatch has been released in VS Code InsidersPatch has been released in VS Code Insiders

