diff --git a/lib/core.js b/lib/core.js index 1e6406a2e6f..4e039f49231 100644 --- a/lib/core.js +++ b/lib/core.js @@ -2728,7 +2728,7 @@ type Pick> = {[key in Keys]: O[key]}; /** * Omit specific fields from an object, e.g. Omit */ -type Omit> = {[key in Exclude<$Keys, Keys>]: O[key]}; +type Omit> = Pick, Keys>>; /** * Construct an object type using string literals as keys with the given type, diff --git a/tests/mapped_type_utilities/mapped_type_utilities.exp b/tests/mapped_type_utilities/mapped_type_utilities.exp index 64c509b206c..d5cd1bebeb3 100644 --- a/tests/mapped_type_utilities/mapped_type_utilities.exp +++ b/tests/mapped_type_utilities/mapped_type_utilities.exp @@ -1,6 +1,6 @@ Error ------------------------------------------------------------------------------------------------------ omit.js:7:7 -Cannot get `noFoo.foo` because property `foo` is missing in `Omit` [1]. [prop-missing] +Cannot get `noFoo.foo` because property `foo` is missing in `Pick` [1]. [prop-missing] omit.js:7:7 7| noFoo.foo; // ERROR @@ -14,7 +14,7 @@ References: Error ---------------------------------------------------------------------------------------------------- omit.js:12:12 -Cannot get `noFooOrBar.foo` because property `foo` is missing in `Omit` [1]. [prop-missing] +Cannot get `noFooOrBar.foo` because property `foo` is missing in `Pick` [1]. [prop-missing] omit.js:12:12 12| noFooOrBar.foo; // ERROR @@ -28,7 +28,7 @@ References: Error ---------------------------------------------------------------------------------------------------- omit.js:13:12 -Cannot get `noFooOrBar.bar` because property `bar` (did you mean `baz`?) is missing in `Omit` [1]. [prop-missing] +Cannot get `noFooOrBar.bar` because property `bar` (did you mean `baz`?) is missing in `Pick` [1]. [prop-missing] omit.js:13:12 13| noFooOrBar.bar; // ERROR diff --git a/tests/mapped_type_utilities/omit.js b/tests/mapped_type_utilities/omit.js index 25ad5940c7b..967328da5a0 100644 --- a/tests/mapped_type_utilities/omit.js +++ b/tests/mapped_type_utilities/omit.js @@ -13,3 +13,5 @@ noFooOrBar.foo; // ERROR noFooOrBar.bar; // ERROR noFooOrBar.baz; // OK (noFooOrBar:{baz: number}); // OK + +const o: Omit<{ foo?: string, bar: number; }, "bar"> = {}; // OK