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
}
}
|