Skip to content

Commit baf31ec

Browse files
committed
Test Diff and Omit
1 parent 12b80f3 commit baf31ec

4 files changed

Lines changed: 82 additions & 0 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//// [indexedAccessRetainsIndexSignature.ts]
2+
type Diff<T extends string, U extends string> =
3+
({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T]
4+
type Omit<U, K extends keyof U> = Pick<U, Diff<keyof U, K>>
5+
6+
7+
type O = Omit<{ a: number, b: string }, 'a'>
8+
9+
10+
//// [indexedAccessRetainsIndexSignature.js]
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
=== tests/cases/compiler/indexedAccessRetainsIndexSignature.ts ===
2+
type Diff<T extends string, U extends string> =
3+
>Diff : Symbol(Diff, Decl(indexedAccessRetainsIndexSignature.ts, 0, 0))
4+
>T : Symbol(T, Decl(indexedAccessRetainsIndexSignature.ts, 0, 10))
5+
>U : Symbol(U, Decl(indexedAccessRetainsIndexSignature.ts, 0, 27))
6+
7+
({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T]
8+
>P : Symbol(P, Decl(indexedAccessRetainsIndexSignature.ts, 1, 8))
9+
>T : Symbol(T, Decl(indexedAccessRetainsIndexSignature.ts, 0, 10))
10+
>P : Symbol(P, Decl(indexedAccessRetainsIndexSignature.ts, 1, 8))
11+
>P : Symbol(P, Decl(indexedAccessRetainsIndexSignature.ts, 1, 26))
12+
>U : Symbol(U, Decl(indexedAccessRetainsIndexSignature.ts, 0, 27))
13+
>x : Symbol(x, Decl(indexedAccessRetainsIndexSignature.ts, 1, 48))
14+
>T : Symbol(T, Decl(indexedAccessRetainsIndexSignature.ts, 0, 10))
15+
16+
type Omit<U, K extends keyof U> = Pick<U, Diff<keyof U, K>>
17+
>Omit : Symbol(Omit, Decl(indexedAccessRetainsIndexSignature.ts, 1, 71))
18+
>U : Symbol(U, Decl(indexedAccessRetainsIndexSignature.ts, 2, 10))
19+
>K : Symbol(K, Decl(indexedAccessRetainsIndexSignature.ts, 2, 12))
20+
>U : Symbol(U, Decl(indexedAccessRetainsIndexSignature.ts, 2, 10))
21+
>Pick : Symbol(Pick, Decl(lib.d.ts, --, --))
22+
>U : Symbol(U, Decl(indexedAccessRetainsIndexSignature.ts, 2, 10))
23+
>Diff : Symbol(Diff, Decl(indexedAccessRetainsIndexSignature.ts, 0, 0))
24+
>U : Symbol(U, Decl(indexedAccessRetainsIndexSignature.ts, 2, 10))
25+
>K : Symbol(K, Decl(indexedAccessRetainsIndexSignature.ts, 2, 12))
26+
27+
28+
type O = Omit<{ a: number, b: string }, 'a'>
29+
>O : Symbol(O, Decl(indexedAccessRetainsIndexSignature.ts, 2, 59))
30+
>Omit : Symbol(Omit, Decl(indexedAccessRetainsIndexSignature.ts, 1, 71))
31+
>a : Symbol(a, Decl(indexedAccessRetainsIndexSignature.ts, 5, 15))
32+
>b : Symbol(b, Decl(indexedAccessRetainsIndexSignature.ts, 5, 26))
33+
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
=== tests/cases/compiler/indexedAccessRetainsIndexSignature.ts ===
2+
type Diff<T extends string, U extends string> =
3+
>Diff : ({ [P in T]: P; } & { [P in U]: never; } & { [x: string]: never; })[T]
4+
>T : T
5+
>U : U
6+
7+
({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T]
8+
>P : P
9+
>T : T
10+
>P : P
11+
>P : P
12+
>U : U
13+
>x : string
14+
>T : T
15+
16+
type Omit<U, K extends keyof U> = Pick<U, Diff<keyof U, K>>
17+
>Omit : Pick<U, ({ [P in T]: P; } & { [P in U]: never; } & { [x: string]: never; })[keyof U]>
18+
>U : U
19+
>K : K
20+
>U : U
21+
>Pick : Pick<T, K>
22+
>U : U
23+
>Diff : ({ [P in T]: P; } & { [P in U]: never; } & { [x: string]: never; })[T]
24+
>U : U
25+
>K : K
26+
27+
28+
type O = Omit<{ a: number, b: string }, 'a'>
29+
>O : Pick<{ a: number; b: string; }, "b">
30+
>Omit : Pick<U, ({ [P in T]: P; } & { [P in U]: never; } & { [x: string]: never; })[keyof U]>
31+
>a : number
32+
>b : string
33+
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
type Diff<T extends string, U extends string> =
2+
({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T]
3+
type Omit<U, K extends keyof U> = Pick<U, Diff<keyof U, K>>
4+
5+
6+
type O = Omit<{ a: number, b: string }, 'a'>

0 commit comments

Comments
 (0)