File: bindingPatternContextualTypeDoesNotCauseWidening.types

package info (click to toggle)
node-typescript 5.0.4%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 459,140 kB
  • sloc: javascript: 1,972,754; makefile: 6; sh: 1
file content (29 lines) | stat: -rw-r--r-- 967 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
=== tests/cases/compiler/bindingPatternContextualTypeDoesNotCauseWidening.ts ===
declare function pick<O, T extends keyof O>(keys: T[], obj?: O): Pick<O, T>;
>pick : <O, T extends keyof O>(keys: T[], obj?: O) => Pick<O, T>
>keys : T[]
>obj : O

const _    = pick(['b'], { a: 'a', b: 'b' }); // T: "b"
>_ : Pick<{ a: string; b: string; }, "b">
>pick(['b'], { a: 'a', b: 'b' }) : Pick<{ a: string; b: string; }, "b">
>pick : <O, T extends keyof O>(keys: T[], obj?: O) => Pick<O, T>
>['b'] : "b"[]
>'b' : "b"
>{ a: 'a', b: 'b' } : { a: string; b: string; }
>a : string
>'a' : "a"
>b : string
>'b' : "b"

const {  } = pick(['b'], { a: 'a', b: 'b' }); // T: "b" | "a" ??? (before fix)
>pick(['b'], { a: 'a', b: 'b' }) : Pick<{ a: string; b: string; }, "b">
>pick : <O, T extends keyof O>(keys: T[], obj?: O) => Pick<O, T>
>['b'] : "b"[]
>'b' : "b"
>{ a: 'a', b: 'b' } : { a: string; b: string; }
>a : string
>'a' : "a"
>b : string
>'b' : "b"