File: inferenceOptionalPropertiesToIndexSignatures.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 (109 lines) | stat: -rw-r--r-- 3,689 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
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
=== tests/cases/compiler/inferenceOptionalPropertiesToIndexSignatures.ts ===
declare function foo<T>(obj: { [x: string]: T }): T;
>foo : <T>(obj: { [x: string]: T; }) => T
>obj : { [x: string]: T; }
>x : string

declare const x1: { a: string, b: number };
>x1 : { a: string; b: number; }
>a : string
>b : number

declare const x2: { a: string, b: number | undefined };
>x2 : { a: string; b: number | undefined; }
>a : string
>b : number | undefined

declare const x3: { a: string, b?: number };
>x3 : { a: string; b?: number | undefined; }
>a : string
>b : number | undefined

declare const x4: { a: string, b?: number | undefined };
>x4 : { a: string; b?: number | undefined; }
>a : string
>b : number | undefined

let a1 = foo(x1);  // string | number
>a1 : string | number
>foo(x1) : string | number
>foo : <T>(obj: { [x: string]: T; }) => T
>x1 : { a: string; b: number; }

let a2 = foo(x2);  // string | number | undefined
>a2 : string | number | undefined
>foo(x2) : string | number | undefined
>foo : <T>(obj: { [x: string]: T; }) => T
>x2 : { a: string; b: number | undefined; }

let a3 = foo(x3);  // string | number
>a3 : string | number
>foo(x3) : string | number
>foo : <T>(obj: { [x: string]: T; }) => T
>x3 : { a: string; b?: number | undefined; }

let a4 = foo(x4);  // string | number
>a4 : string | number
>foo(x4) : string | number
>foo : <T>(obj: { [x: string]: T; }) => T
>x4 : { a: string; b?: number | undefined; }

// Repro from #43045

const param2 = Math.random() < 0.5 ? 'value2' : null;
>param2 : "value2" | null
>Math.random() < 0.5 ? 'value2' : null : "value2" | null
>Math.random() < 0.5 : boolean
>Math.random() : number
>Math.random : () => number
>Math : Math
>random : () => number
>0.5 : 0.5
>'value2' : "value2"
>null : null

const obj = {
>obj : { param2?: string | undefined; param1: string; }
>{    param1: 'value1',    ...(param2 ? {param2} : {})} : { param2?: string | undefined; param1: string; }

    param1: 'value1',
>param1 : string
>'value1' : "value1"

    ...(param2 ? {param2} : {})
>(param2 ? {param2} : {}) : { param2: string; } | {}
>param2 ? {param2} : {} : { param2: string; } | {}
>param2 : "value2" | null
>{param2} : { param2: string; }
>param2 : string
>{} : {}

};

const query = Object.entries(obj).map(
>query : string
>Object.entries(obj).map(    ([k, v]) => `${k}=${encodeURIComponent(v)}`).join('&') : string
>Object.entries(obj).map(    ([k, v]) => `${k}=${encodeURIComponent(v)}`).join : (separator?: string | undefined) => string
>Object.entries(obj).map(    ([k, v]) => `${k}=${encodeURIComponent(v)}`) : string[]
>Object.entries(obj).map : <U>(callbackfn: (value: [string, string], index: number, array: [string, string][]) => U, thisArg?: any) => U[]
>Object.entries(obj) : [string, string][]
>Object.entries : { <T>(o: { [s: string]: T; } | ArrayLike<T>): [string, T][]; (o: {}): [string, any][]; }
>Object : ObjectConstructor
>entries : { <T>(o: { [s: string]: T; } | ArrayLike<T>): [string, T][]; (o: {}): [string, any][]; }
>obj : { param2?: string | undefined; param1: string; }
>map : <U>(callbackfn: (value: [string, string], index: number, array: [string, string][]) => U, thisArg?: any) => U[]

    ([k, v]) => `${k}=${encodeURIComponent(v)}`
>([k, v]) => `${k}=${encodeURIComponent(v)}` : ([k, v]: [string, string]) => string
>k : string
>v : string
>`${k}=${encodeURIComponent(v)}` : string
>k : string
>encodeURIComponent(v) : string
>encodeURIComponent : (uriComponent: string | number | boolean) => string
>v : string

).join('&');
>join : (separator?: string | undefined) => string
>'&' : "&"