mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-10 15:25:54 -06:00
Test Diff and Omit
This commit is contained in:
parent
12b80f3183
commit
baf31ec52e
@ -0,0 +1,10 @@
|
||||
//// [indexedAccessRetainsIndexSignature.ts]
|
||||
type Diff<T extends string, U extends string> =
|
||||
({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T]
|
||||
type Omit<U, K extends keyof U> = Pick<U, Diff<keyof U, K>>
|
||||
|
||||
|
||||
type O = Omit<{ a: number, b: string }, 'a'>
|
||||
|
||||
|
||||
//// [indexedAccessRetainsIndexSignature.js]
|
||||
@ -0,0 +1,33 @@
|
||||
=== tests/cases/compiler/indexedAccessRetainsIndexSignature.ts ===
|
||||
type Diff<T extends string, U extends string> =
|
||||
>Diff : Symbol(Diff, Decl(indexedAccessRetainsIndexSignature.ts, 0, 0))
|
||||
>T : Symbol(T, Decl(indexedAccessRetainsIndexSignature.ts, 0, 10))
|
||||
>U : Symbol(U, Decl(indexedAccessRetainsIndexSignature.ts, 0, 27))
|
||||
|
||||
({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T]
|
||||
>P : Symbol(P, Decl(indexedAccessRetainsIndexSignature.ts, 1, 8))
|
||||
>T : Symbol(T, Decl(indexedAccessRetainsIndexSignature.ts, 0, 10))
|
||||
>P : Symbol(P, Decl(indexedAccessRetainsIndexSignature.ts, 1, 8))
|
||||
>P : Symbol(P, Decl(indexedAccessRetainsIndexSignature.ts, 1, 26))
|
||||
>U : Symbol(U, Decl(indexedAccessRetainsIndexSignature.ts, 0, 27))
|
||||
>x : Symbol(x, Decl(indexedAccessRetainsIndexSignature.ts, 1, 48))
|
||||
>T : Symbol(T, Decl(indexedAccessRetainsIndexSignature.ts, 0, 10))
|
||||
|
||||
type Omit<U, K extends keyof U> = Pick<U, Diff<keyof U, K>>
|
||||
>Omit : Symbol(Omit, Decl(indexedAccessRetainsIndexSignature.ts, 1, 71))
|
||||
>U : Symbol(U, Decl(indexedAccessRetainsIndexSignature.ts, 2, 10))
|
||||
>K : Symbol(K, Decl(indexedAccessRetainsIndexSignature.ts, 2, 12))
|
||||
>U : Symbol(U, Decl(indexedAccessRetainsIndexSignature.ts, 2, 10))
|
||||
>Pick : Symbol(Pick, Decl(lib.d.ts, --, --))
|
||||
>U : Symbol(U, Decl(indexedAccessRetainsIndexSignature.ts, 2, 10))
|
||||
>Diff : Symbol(Diff, Decl(indexedAccessRetainsIndexSignature.ts, 0, 0))
|
||||
>U : Symbol(U, Decl(indexedAccessRetainsIndexSignature.ts, 2, 10))
|
||||
>K : Symbol(K, Decl(indexedAccessRetainsIndexSignature.ts, 2, 12))
|
||||
|
||||
|
||||
type O = Omit<{ a: number, b: string }, 'a'>
|
||||
>O : Symbol(O, Decl(indexedAccessRetainsIndexSignature.ts, 2, 59))
|
||||
>Omit : Symbol(Omit, Decl(indexedAccessRetainsIndexSignature.ts, 1, 71))
|
||||
>a : Symbol(a, Decl(indexedAccessRetainsIndexSignature.ts, 5, 15))
|
||||
>b : Symbol(b, Decl(indexedAccessRetainsIndexSignature.ts, 5, 26))
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
=== tests/cases/compiler/indexedAccessRetainsIndexSignature.ts ===
|
||||
type Diff<T extends string, U extends string> =
|
||||
>Diff : ({ [P in T]: P; } & { [P in U]: never; } & { [x: string]: never; })[T]
|
||||
>T : T
|
||||
>U : U
|
||||
|
||||
({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T]
|
||||
>P : P
|
||||
>T : T
|
||||
>P : P
|
||||
>P : P
|
||||
>U : U
|
||||
>x : string
|
||||
>T : T
|
||||
|
||||
type Omit<U, K extends keyof U> = Pick<U, Diff<keyof U, K>>
|
||||
>Omit : Pick<U, ({ [P in T]: P; } & { [P in U]: never; } & { [x: string]: never; })[keyof U]>
|
||||
>U : U
|
||||
>K : K
|
||||
>U : U
|
||||
>Pick : Pick<T, K>
|
||||
>U : U
|
||||
>Diff : ({ [P in T]: P; } & { [P in U]: never; } & { [x: string]: never; })[T]
|
||||
>U : U
|
||||
>K : K
|
||||
|
||||
|
||||
type O = Omit<{ a: number, b: string }, 'a'>
|
||||
>O : Pick<{ a: number; b: string; }, "b">
|
||||
>Omit : Pick<U, ({ [P in T]: P; } & { [P in U]: never; } & { [x: string]: never; })[keyof U]>
|
||||
>a : number
|
||||
>b : string
|
||||
|
||||
@ -0,0 +1,6 @@
|
||||
type Diff<T extends string, U extends string> =
|
||||
({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T]
|
||||
type Omit<U, K extends keyof U> = Pick<U, Diff<keyof U, K>>
|
||||
|
||||
|
||||
type O = Omit<{ a: number, b: string }, 'a'>
|
||||
Loading…
x
Reference in New Issue
Block a user