Skip to content

Commit 586ecbf

Browse files
Merge pull request #30552 from Microsoft/omit
Add the Omit helper type
2 parents b8f6ae4 + 71af02f commit 586ecbf

14 files changed

+38
-9
lines changed

src/harness/fourslash.ts

+1
Original file line numberDiff line numberDiff line change
@@ -4507,6 +4507,7 @@ namespace FourSlashInterface {
45074507
typeEntry("Record"),
45084508
typeEntry("Exclude"),
45094509
typeEntry("Extract"),
4510+
typeEntry("Omit"),
45104511
typeEntry("NonNullable"),
45114512
typeEntry("Parameters"),
45124513
typeEntry("ConstructorParameters"),

src/lib/es5.d.ts

+5
Original file line numberDiff line numberDiff line change
@@ -1443,6 +1443,11 @@ type Exclude<T, U> = T extends U ? never : T;
14431443
*/
14441444
type Extract<T, U> = T extends U ? T : never;
14451445

1446+
/**
1447+
* Construct a type with the properties of T except for those in type K.
1448+
*/
1449+
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;
1450+
14461451
/**
14471452
* Exclude null and undefined from T
14481453
*/

tests/baselines/reference/circularlySimplifyingConditionalTypesNoCrash.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,14 @@ const myStoreConnect: Connect = function(
4545
mergeProps,
4646
options,
4747
);
48-
};
48+
};
49+
50+
export {};
51+
4952

5053
//// [circularlySimplifyingConditionalTypesNoCrash.js]
5154
"use strict";
55+
exports.__esModule = true;
5256
var myStoreConnect = function (mapStateToProps, mapDispatchToProps, mergeProps, options) {
5357
if (options === void 0) { options = {}; }
5458
return connect(mapStateToProps, mapDispatchToProps, mergeProps, options);

tests/baselines/reference/circularlySimplifyingConditionalTypesNoCrash.symbols

+3
Original file line numberDiff line numberDiff line change
@@ -152,3 +152,6 @@ const myStoreConnect: Connect = function(
152152

153153
);
154154
};
155+
156+
export {};
157+

tests/baselines/reference/circularlySimplifyingConditionalTypesNoCrash.types

+3
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,6 @@ const myStoreConnect: Connect = function(
9090

9191
);
9292
};
93+
94+
export {};
95+

tests/baselines/reference/indexedAccessRetainsIndexSignature.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ type Omit1<U, K extends keyof U> = Pick<U, Diff<keyof U, K>>;
88
type Omit2<T, K extends keyof T> = {[P in Diff<keyof T, K>]: T[P]};
99

1010
type O = Omit<{ a: number, b: string }, 'a'>
11-
const o: O = { b: '' }
11+
export const o: O = { b: '' }
1212

1313

1414
//// [indexedAccessRetainsIndexSignature.js]
15-
var o = { b: '' };
15+
"use strict";
16+
exports.__esModule = true;
17+
exports.o = { b: '' };

tests/baselines/reference/indexedAccessRetainsIndexSignature.symbols

+3-3
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ type O = Omit<{ a: number, b: string }, 'a'>
5555
>a : Symbol(a, Decl(indexedAccessRetainsIndexSignature.ts, 8, 15))
5656
>b : Symbol(b, Decl(indexedAccessRetainsIndexSignature.ts, 8, 26))
5757

58-
const o: O = { b: '' }
59-
>o : Symbol(o, Decl(indexedAccessRetainsIndexSignature.ts, 9, 5))
58+
export const o: O = { b: '' }
59+
>o : Symbol(o, Decl(indexedAccessRetainsIndexSignature.ts, 9, 12))
6060
>O : Symbol(O, Decl(indexedAccessRetainsIndexSignature.ts, 6, 67))
61-
>b : Symbol(b, Decl(indexedAccessRetainsIndexSignature.ts, 9, 14))
61+
>b : Symbol(b, Decl(indexedAccessRetainsIndexSignature.ts, 9, 21))
6262

tests/baselines/reference/indexedAccessRetainsIndexSignature.types

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type O = Omit<{ a: number, b: string }, 'a'>
2121
>a : number
2222
>b : string
2323

24-
const o: O = { b: '' }
24+
export const o: O = { b: '' }
2525
>o : Pick<{ a: number; b: string; }, "b">
2626
>{ b: '' } : { b: string; }
2727
>b : string

tests/baselines/reference/reactReduxLikeDeferredInferenceAllowsAssignment.js

+3
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ const Test1 = connect(
143143
null,
144144
mapDispatchToProps
145145
)(TestComponent);
146+
147+
export {};
146148

147149

148150
//// [reactReduxLikeDeferredInferenceAllowsAssignment.js]
@@ -196,6 +198,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
196198
}
197199
};
198200
var _this = this;
201+
exports.__esModule = true;
199202
var simpleAction = function (payload) { return ({
200203
type: "SIMPLE_ACTION",
201204
payload: payload

tests/baselines/reference/reactReduxLikeDeferredInferenceAllowsAssignment.symbols

+2
Original file line numberDiff line numberDiff line change
@@ -469,3 +469,5 @@ const Test1 = connect(
469469
)(TestComponent);
470470
>TestComponent : Symbol(TestComponent, Decl(reactReduxLikeDeferredInferenceAllowsAssignment.ts, 134, 1))
471471

472+
export {};
473+

tests/baselines/reference/reactReduxLikeDeferredInferenceAllowsAssignment.types

+2
Original file line numberDiff line numberDiff line change
@@ -286,3 +286,5 @@ const Test1 = connect(
286286
)(TestComponent);
287287
>TestComponent : typeof TestComponent
288288

289+
export {};
290+

tests/cases/compiler/circularlySimplifyingConditionalTypesNoCrash.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,6 @@ const myStoreConnect: Connect = function(
4545
mergeProps,
4646
options,
4747
);
48-
};
48+
};
49+
50+
export {};

tests/cases/compiler/indexedAccessRetainsIndexSignature.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ type Omit1<U, K extends keyof U> = Pick<U, Diff<keyof U, K>>;
77
type Omit2<T, K extends keyof T> = {[P in Diff<keyof T, K>]: T[P]};
88

99
type O = Omit<{ a: number, b: string }, 'a'>
10-
const o: O = { b: '' }
10+
export const o: O = { b: '' }

tests/cases/compiler/reactReduxLikeDeferredInferenceAllowsAssignment.ts

+2
Original file line numberDiff line numberDiff line change
@@ -143,3 +143,5 @@ const Test1 = connect(
143143
null,
144144
mapDispatchToProps
145145
)(TestComponent);
146+
147+
export {};

0 commit comments

Comments
 (0)