File: inferentialTypingWithFunctionTypeSyntacticScenarios.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 (118 lines) | stat: -rw-r--r-- 3,019 bytes parent folder | download | duplicates (5)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
=== tests/cases/compiler/inferentialTypingWithFunctionTypeSyntacticScenarios.ts ===
declare function map<T, U>(array: T, func: (x: T) => U): U;
>map : <T, U>(array: T, func: (x: T) => U) => U
>array : T
>func : (x: T) => U
>x : T

declare function identity<V>(y: V): V;
>identity : <V>(y: V) => V
>y : V

var s: string;
>s : string

// dotted name
var dottedIdentity = { x: identity };
>dottedIdentity : { x: <V>(y: V) => V; }
>{ x: identity } : { x: <V>(y: V) => V; }
>x : <V>(y: V) => V
>identity : <V>(y: V) => V

s = map("", dottedIdentity.x);
>s = map("", dottedIdentity.x) : string
>s : string
>map("", dottedIdentity.x) : string
>map : <T, U>(array: T, func: (x: T) => U) => U
>"" : ""
>dottedIdentity.x : <V>(y: V) => V
>dottedIdentity : { x: <V>(y: V) => V; }
>x : <V>(y: V) => V

// index expression
s = map("", dottedIdentity['x']);
>s = map("", dottedIdentity['x']) : string
>s : string
>map("", dottedIdentity['x']) : string
>map : <T, U>(array: T, func: (x: T) => U) => U
>"" : ""
>dottedIdentity['x'] : <V>(y: V) => V
>dottedIdentity : { x: <V>(y: V) => V; }
>'x' : "x"

// function call
s = map("", (() => identity)());
>s = map("", (() => identity)()) : string
>s : string
>map("", (() => identity)()) : string
>map : <T, U>(array: T, func: (x: T) => U) => U
>"" : ""
>(() => identity)() : <V>(y: V) => V
>(() => identity) : () => <V>(y: V) => V
>() => identity : () => <V>(y: V) => V
>identity : <V>(y: V) => V

// construct
interface IdentityConstructor {
    new (): typeof identity;
>identity : <V>(y: V) => V
}
var ic: IdentityConstructor;
>ic : IdentityConstructor

s = map("", new ic());
>s = map("", new ic()) : string
>s : string
>map("", new ic()) : string
>map : <T, U>(array: T, func: (x: T) => U) => U
>"" : ""
>new ic() : <V>(y: V) => V
>ic : IdentityConstructor

// assignment
var t;
>t : any

s = map("", t = identity);
>s = map("", t = identity) : string
>s : string
>map("", t = identity) : string
>map : <T, U>(array: T, func: (x: T) => U) => U
>"" : ""
>t = identity : <V>(y: V) => V
>t : any
>identity : <V>(y: V) => V

// type assertion
s = map("", <typeof identity>identity);
>s = map("", <typeof identity>identity) : string
>s : string
>map("", <typeof identity>identity) : string
>map : <T, U>(array: T, func: (x: T) => U) => U
>"" : ""
><typeof identity>identity : <V>(y: V) => V
>identity : <V>(y: V) => V
>identity : <V>(y: V) => V

// parenthesized expression
s = map("", (identity));
>s = map("", (identity)) : string
>s : string
>map("", (identity)) : string
>map : <T, U>(array: T, func: (x: T) => U) => U
>"" : ""
>(identity) : <V>(y: V) => V
>identity : <V>(y: V) => V

// comma
s = map("", ("", identity));
>s = map("", ("", identity)) : string
>s : string
>map("", ("", identity)) : string
>map : <T, U>(array: T, func: (x: T) => U) => U
>"" : ""
>("", identity) : <V>(y: V) => V
>"", identity : <V>(y: V) => V
>"" : ""
>identity : <V>(y: V) => V