Skip to content

Commit

Permalink
OverrideProperties: Fix a missing case (#609)
Browse files Browse the repository at this point in the history
  • Loading branch information
jinta4020 committed Apr 28, 2023
1 parent 5e6d9e8 commit 44ec7ec
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 2 deletions.
7 changes: 5 additions & 2 deletions source/override-properties.d.ts
Expand Up @@ -15,12 +15,15 @@ type Bar = OverrideProperties<Foo, {b: number}>
//=> {a: string, b: number}
type Baz = OverrideProperties<Foo, {c: number}>
// error TS2559: Type '{c: number}' has no properties in common with type 'Partial{a: unknown; b: unknown}>'.
// Error, type '{ c: number; }' does not satisfy the constraint '{ c: never; }'
type Fizz = OverrideProperties<Foo, {b: number; c: number}>
// Error, type '{ b: number; c: number; }' does not satisfy the constraint '{ b: number; c: never; }'
```
@category Object
*/
export type OverrideProperties<
TOriginal,
TOverride extends Partial<{[key in keyof TOriginal]: unknown}>,
TOverride extends {[Key in keyof TOverride]: Key extends keyof TOriginal ? TOverride[Key] : never},
> = Merge<TOriginal, TOverride>;
4 changes: 4 additions & 0 deletions test-d/override-properties.ts
Expand Up @@ -12,3 +12,7 @@ expectType<{a: number; b: number}>(fixture);
expectError(() => {
type Bar = OverrideProperties<Foo, {c: number}>;
});

expectError(() => {
type Bar = OverrideProperties<Foo, {b: number; c: number}>;
});

0 comments on commit 44ec7ec

Please sign in to comment.