OverrideProperties: Fix autocomplete in the type (#712)

This commit is contained in:
Henrique Inonhe 2023-10-16 15:49:46 -03:00 committed by GitHub
parent 47626cf470
commit fcdcfe9b15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -25,5 +25,12 @@ type Fizz = OverrideProperties<Foo, {b: number; c: number}>
*/
export type OverrideProperties<
TOriginal,
TOverride extends {[Key in keyof TOverride]: Key extends keyof TOriginal ? TOverride[Key] : never},
// This first bit where we use `Partial` is to enable autocomplete
// and the second bit with the mapped type is what enforces that we don't try
// to override properties that doesn't exist in the original type.
TOverride extends Partial<Record<keyof TOriginal, unknown>> & {
[Key in keyof TOverride]: Key extends keyof TOriginal
? TOverride[Key]
: never;
},
> = Merge<TOriginal, TOverride>;