File: typeSatisfaction_contextualTyping2.types

package info (click to toggle)
node-typescript 5.0.4%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 459,116 kB
  • sloc: javascript: 1,972,754; makefile: 6; sh: 1
file content (30 lines) | stat: -rw-r--r-- 1,130 bytes parent folder | download | duplicates (2)
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
30
=== tests/cases/conformance/expressions/typeSatisfaction/typeSatisfaction_contextualTyping2.ts ===
let obj: { f(s: string): void } & Record<string, unknown> = {
>obj : { f(s: string): void; } & Record<string, unknown>
>f : (s: string) => void
>s : string
>{    f(s) { }, // "incorrect" implicit any on 's'    g(s) { }} satisfies { g(s: string): void } & Record<string, unknown> : { f(s: any): void; g(s: string): void; }
>{    f(s) { }, // "incorrect" implicit any on 's'    g(s) { }} : { f(s: any): void; g(s: string): void; }

    f(s) { }, // "incorrect" implicit any on 's'
>f : (s: any) => void
>s : any

    g(s) { }
>g : (s: string) => void
>s : string

} satisfies { g(s: string): void } & Record<string, unknown>;
>g : (s: string) => void
>s : string

// This needs to not crash (outer node is not expression)
({ f(x) { } }) satisfies { f(s: string): void };
>({ f(x) { } }) satisfies { f(s: string): void } : { f(x: string): void; }
>({ f(x) { } }) : { f(x: string): void; }
>{ f(x) { } } : { f(x: string): void; }
>f : (x: string) => void
>x : string
>f : (s: string) => void
>s : string