File tree 1 file changed +8
-1
lines changed 1 file changed +8
-1
lines changed Original file line number Diff line number Diff line change @@ -1463,10 +1463,17 @@ type Exclude<T, U> = T extends U ? never : T;
1463
1463
*/
1464
1464
type Extract < T , U > = T extends U ? T : never ;
1465
1465
1466
+ export type KnownKeys < T > = {
1467
+ [ K in keyof T ] : string extends K ? never : number extends K ? never : K
1468
+ } extends { [ _ in keyof T ] : infer U } ? ( { } extends U ? never : U ) : never ;
1469
+ type OmitFromKnownKeys < T , K extends keyof T > = KnownKeys < T > extends infer U ?
1470
+ [ U ] extends [ keyof T ] ? Pick < T , Exclude < U , K > > : never : never ;
1466
1471
/**
1467
1472
* Construct a type with the properties of T except for those in type K.
1468
1473
*/
1469
- type Omit < T , K extends keyof any > = Pick < T , Exclude < keyof T , K > > ;
1474
+ type Omit < T , K extends keyof T > = OmitFromKnownKeys < T , K >
1475
+ & ( string extends K ? { } : ( string extends keyof T ? { [ n : string ] : T [ Exclude < keyof T , number > ] } : { } ) )
1476
+ & ( number extends K ? { } : ( number extends keyof T ? { [ n : number ] : T [ Exclude < keyof T , string > ] } : { } ) ) ;
1470
1477
1471
1478
/**
1472
1479
* Exclude null and undefined from T
You can’t perform that action at this time.
0 commit comments