@@ -124,10 +124,7 @@ interface Object {
124124 propertyIsEnumerable ( v : string ) : boolean ;
125125}
126126
127- /**
128- * Provides functionality common to all JavaScript objects.
129- */
130- declare var Object : {
127+ interface ObjectConstructor {
131128 new ( value ?: any ) : Object ;
132129 ( ) : any ;
133130 ( value : any ) : any ;
@@ -221,6 +218,11 @@ declare var Object: {
221218 keys ( o : any ) : string [ ] ;
222219}
223220
221+ /**
222+ * Provides functionality common to all JavaScript objects.
223+ */
224+ declare var Object : ObjectConstructor ;
225+
224226/**
225227 * Creates a new function.
226228 */
@@ -255,8 +257,8 @@ interface Function {
255257 caller : Function ;
256258}
257259
258- declare var Function : {
259- /**
260+ interface FunctionConstructor {
261+ /**
260262 * Creates a new function.
261263 * @param args A list of arguments the function accepts.
262264 */
@@ -265,6 +267,8 @@ declare var Function: {
265267 prototype : Function ;
266268}
267269
270+ declare var Function : FunctionConstructor ;
271+
268272interface IArguments {
269273 [ index : number ] : any ;
270274 length : number ;
@@ -424,24 +428,29 @@ interface String {
424428 [ index : number ] : string ;
425429}
426430
427- /**
428- * Allows manipulation and formatting of text strings and determination and location of substrings within strings.
429- */
430- declare var String : {
431+ interface StringConstructor {
431432 new ( value ?: any ) : String ;
432433 ( value ?: any ) : string ;
433434 prototype : String ;
434435 fromCharCode ( ...codes : number [ ] ) : string ;
435436}
436437
438+ /**
439+ * Allows manipulation and formatting of text strings and determination and location of substrings within strings.
440+ */
441+ declare var String : StringConstructor ;
442+
437443interface Boolean {
438444}
439- declare var Boolean : {
445+
446+ interface BooleanConstructor {
440447 new ( value ?: any ) : Boolean ;
441448 ( value ?: any ) : boolean ;
442449 prototype : Boolean ;
443450}
444451
452+ declare var Boolean : BooleanConstructor ;
453+
445454interface Number {
446455 /**
447456 * Returns a string representation of an object.
@@ -468,8 +477,7 @@ interface Number {
468477 toPrecision ( precision ?: number ) : string ;
469478}
470479
471- /** An object that represents a number of any kind. All JavaScript numbers are 64-bit floating-point numbers. */
472- declare var Number : {
480+ interface NumberConstructor {
473481 new ( value ?: any ) : Number ;
474482 ( value ?: any ) : number ;
475483 prototype : Number ;
@@ -499,6 +507,9 @@ declare var Number: {
499507 POSITIVE_INFINITY : number ;
500508}
501509
510+ /** An object that represents a number of any kind. All JavaScript numbers are 64-bit floating-point numbers. */
511+ declare var Number : NumberConstructor ;
512+
502513interface TemplateStringsArray extends Array < string > {
503514 raw : string [ ] ;
504515}
@@ -768,7 +779,7 @@ interface Date {
768779 toJSON ( key ?: any ) : string ;
769780}
770781
771- declare var Date : {
782+ interface DateConstructor {
772783 new ( ) : Date ;
773784 new ( value : number ) : Date ;
774785 new ( value : string ) : Date ;
@@ -794,6 +805,8 @@ declare var Date: {
794805 now ( ) : number ;
795806}
796807
808+ declare var Date : DateConstructor ;
809+
797810interface RegExpMatchArray extends Array < string > {
798811 index ?: number ;
799812 input ?: string ;
@@ -834,9 +847,11 @@ interface RegExp {
834847 // Non-standard extensions
835848 compile ( ) : RegExp ;
836849}
837- declare var RegExp : {
850+
851+ interface RegExpConstructor {
838852 new ( pattern : string , flags ?: string ) : RegExp ;
839853 ( pattern : string , flags ?: string ) : RegExp ;
854+ prototype : RegExp ;
840855
841856 // Non-standard extensions
842857 $1 : string ;
@@ -851,64 +866,87 @@ declare var RegExp: {
851866 lastMatch : string ;
852867}
853868
869+ declare var RegExp : RegExpConstructor ;
870+
854871interface Error {
855872 name : string ;
856873 message : string ;
857874}
858- declare var Error : {
875+
876+ interface ErrorConstructor {
859877 new ( message ?: string ) : Error ;
860878 ( message ?: string ) : Error ;
861879 prototype : Error ;
862880}
863881
882+ declare var Error : ErrorConstructor ;
883+
864884interface EvalError extends Error {
865885}
866- declare var EvalError : {
886+
887+ interface EvalErrorConstructor {
867888 new ( message ?: string ) : EvalError ;
868889 ( message ?: string ) : EvalError ;
869890 prototype : EvalError ;
870891}
871892
893+ declare var EvalError : EvalErrorConstructor ;
894+
872895interface RangeError extends Error {
873896}
874- declare var RangeError : {
897+
898+ interface RangeErrorConstructor {
875899 new ( message ?: string ) : RangeError ;
876900 ( message ?: string ) : RangeError ;
877901 prototype : RangeError ;
878902}
879903
904+ declare var RangeError : RangeErrorConstructor ;
905+
880906interface ReferenceError extends Error {
881907}
882- declare var ReferenceError : {
908+
909+ interface ReferenceErrorConstructor {
883910 new ( message ?: string ) : ReferenceError ;
884911 ( message ?: string ) : ReferenceError ;
885912 prototype : ReferenceError ;
886913}
887914
915+ declare var ReferenceError : ReferenceErrorConstructor ;
916+
888917interface SyntaxError extends Error {
889918}
890- declare var SyntaxError : {
919+
920+ interface SyntaxErrorConstructor {
891921 new ( message ?: string ) : SyntaxError ;
892922 ( message ?: string ) : SyntaxError ;
893923 prototype : SyntaxError ;
894924}
895925
926+ declare var SyntaxError : SyntaxErrorConstructor ;
927+
896928interface TypeError extends Error {
897929}
898- declare var TypeError : {
930+
931+ interface TypeErrorConstructor {
899932 new ( message ?: string ) : TypeError ;
900933 ( message ?: string ) : TypeError ;
901934 prototype : TypeError ;
902935}
903936
937+ declare var TypeError : TypeErrorConstructor ;
938+
904939interface URIError extends Error {
905940}
906- declare var URIError : {
941+
942+ interface URIErrorConstructor {
907943 new ( message ?: string ) : URIError ;
908944 ( message ?: string ) : URIError ;
909945 prototype : URIError ;
910946}
911947
948+ declare var URIError : URIErrorConstructor ;
949+
912950interface JSON {
913951 /**
914952 * Converts a JavaScript Object Notation (JSON) string into an object.
@@ -1111,7 +1149,8 @@ interface Array<T> {
11111149
11121150 [ n : number ] : T ;
11131151}
1114- declare var Array : {
1152+
1153+ interface ArrayConstructor {
11151154 new ( arrayLength ?: number ) : any [ ] ;
11161155 new < T > ( arrayLength : number ) : T [ ] ;
11171156 new < T > ( ...items : T [ ] ) : T [ ] ;
@@ -1121,3 +1160,5 @@ declare var Array: {
11211160 isArray ( arg : any ) : boolean ;
11221161 prototype : Array < any > ;
11231162}
1163+
1164+ declare var Array : ArrayConstructor ;
0 commit comments