File: newOperator.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 (146 lines) | stat: -rw-r--r-- 2,599 bytes parent folder | download | duplicates (4)
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
=== tests/cases/compiler/newOperator.ts ===
interface ifc { }
// Attempting to 'new' an interface yields poor error
var i = new ifc();
>i : any
>new ifc() : any
>ifc : any

// Parens are optional
var x = new Date;
>x : Date
>new Date : Date
>Date : DateConstructor

var y = new Date();
>y : Date
>new Date() : Date
>Date : DateConstructor

// Target is not a class or var, good error
var t1 = new 53();
>t1 : any
>new 53() : any
>53 : 53

var t2 = new ''();
>t2 : any
>new ''() : any
>'' : ""

new string;
>new string : any
>string : any

// Use in LHS of expression?
(new Date()).toString();
>(new Date()).toString() : string
>(new Date()).toString : () => string
>(new Date()) : Date
>new Date() : Date
>Date : DateConstructor
>toString : () => string

// Various spacing
var t3 = new string[]( );
>t3 : any
>new string[]( ) : any
>string[] : any
>string : any
> : any

var t4 =
>t4 : any

new
>newstring[    ]    (        ) : any

string
>string[    ] : any
>string : any

[
    ]
> : any

    (
        );

// Unresolved symbol
var f = new q();
>f : any
>new q() : any
>q : any

// not legal
var t5 = new new Date;
>t5 : any
>new new Date : any
>new Date : Date
>Date : DateConstructor

// Can be an expression
new String;
>new String : String
>String : StringConstructor

// Error on union
declare const union: { a: string } | { b: string }
>union : { a: string; } | { b: string; }
>a : string
>b : string

new union;
>new union : any
>union : { a: string; } | { b: string; }

// Error on union with one constructor
declare const ctorUnion: { a: string } | (new (a: string) => void)
>ctorUnion : { a: string; } | (new (a: string) => void)
>a : string
>a : string

new ctorUnion("");
>new ctorUnion("") : any
>ctorUnion : { a: string; } | (new (a: string) => void)
>"" : ""

// Error on union with incompatible constructors
declare const ctorUnion2: (new <T extends number>(a: T) => void) | (new <T>(a: string) => void)
>ctorUnion2 : (new <T extends number>(a: T) => void) | (new <T>(a: string) => void)
>a : T
>a : string

new ctorUnion2("");
>new ctorUnion2("") : any
>ctorUnion2 : (new <T extends number>(a: T) => void) | (new <T>(a: string) => void)
>"" : ""

module M {
>M : typeof M

    export class T {
>T : T

        x: number;
>x : number
    }
}

class S {
>S : S

    public get xs(): M.T[] {
>xs : M.T[]
>M : any

        return new M.T[];
>new M.T[] : any
>M.T[] : any
>M.T : typeof M.T
>M : typeof M
>T : typeof M.T
> : any
    }
}