diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e0dea081f67e8..a49311208c151 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -5575,15 +5575,14 @@ namespace ts { } } + function isStringNamed(d: Declaration) { + const name = getNameOfDeclaration(d); + return !!name && isStringLiteral(name); + } + function isSingleQuotedStringNamed(d: Declaration) { const name = getNameOfDeclaration(d); - if (name && isStringLiteral(name) && ( - name.singleQuote || - (!nodeIsSynthesized(name) && startsWith(getTextOfNode(name, /*includeTrivia*/ false), "'")) - )) { - return true; - } - return false; + return !!(name && isStringLiteral(name) && (name.singleQuote || !nodeIsSynthesized(name) && startsWith(getTextOfNode(name, /*includeTrivia*/ false), "'"))); } function getPropertyNameNodeForSymbol(symbol: Symbol, context: NodeBuilderContext) { @@ -5596,7 +5595,8 @@ namespace ts { return factory.createComputedPropertyName(factory.createPropertyAccessExpression(factory.createIdentifier("Symbol"), (symbol.escapedName as string).substr(3))); } const rawName = unescapeLeadingUnderscores(symbol.escapedName); - return createPropertyNameNodeForIdentifierOrLiteral(rawName, singleQuote); + const stringNamed = !!length(symbol.declarations) && every(symbol.declarations, isStringNamed); + return createPropertyNameNodeForIdentifierOrLiteral(rawName, stringNamed, singleQuote); } // See getNameForSymbolFromNameType for a stringy equivalent @@ -5619,9 +5619,9 @@ namespace ts { } } - function createPropertyNameNodeForIdentifierOrLiteral(name: string, singleQuote?: boolean) { + function createPropertyNameNodeForIdentifierOrLiteral(name: string, stringNamed?: boolean, singleQuote?: boolean) { return isIdentifierText(name, compilerOptions.target) ? factory.createIdentifier(name) : - isNumericLiteralName(name) && +name >= 0 ? factory.createNumericLiteral(+name) : + !stringNamed && isNumericLiteralName(name) && +name >= 0 ? factory.createNumericLiteral(+name) : factory.createStringLiteral(name, !!singleQuote); } diff --git a/tests/baselines/reference/assignmentCompatWithObjectMembersStringNumericNames.errors.txt b/tests/baselines/reference/assignmentCompatWithObjectMembersStringNumericNames.errors.txt index 42a844922027c..ef0a9267441da 100644 --- a/tests/baselines/reference/assignmentCompatWithObjectMembersStringNumericNames.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithObjectMembersStringNumericNames.errors.txt @@ -11,8 +11,8 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersStringNumericNames.ts(34,5): error TS2741: Property ''1.'' is missing in type 'S' but required in type '{ '1.': string; bar?: string; }'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersStringNumericNames.ts(35,5): error TS2741: Property ''1.'' is missing in type 'S2' but required in type '{ '1.': string; bar?: string; }'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersStringNumericNames.ts(36,5): error TS2741: Property ''1.'' is missing in type '{ '1.0': string; }' but required in type '{ '1.': string; bar?: string; }'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersStringNumericNames.ts(38,5): error TS2741: Property ''1.0'' is missing in type '{ 1: string; }' but required in type '{ '1.0': string; }'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersStringNumericNames.ts(39,5): error TS2741: Property ''1'' is missing in type '{ '1.0': string; }' but required in type '{ 1: string; }'. +tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersStringNumericNames.ts(38,5): error TS2741: Property ''1.0'' is missing in type '{ '1': string; }' but required in type '{ '1.0': string; }'. +tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersStringNumericNames.ts(39,5): error TS2741: Property ''1'' is missing in type '{ '1.0': string; }' but required in type '{ '1': string; }'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersStringNumericNames.ts(42,5): error TS2741: Property ''1.0'' is missing in type 'T' but required in type '{ '1.0': string; }'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersStringNumericNames.ts(65,5): error TS2741: Property ''1'' is missing in type '{ '1.0': string; }' but required in type 'S'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersStringNumericNames.ts(71,5): error TS2741: Property ''1'' is missing in type '{ '1.0': string; }' but required in type 'S2'. @@ -108,11 +108,11 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a2 = b2; ~~ -!!! error TS2741: Property ''1.0'' is missing in type '{ 1: string; }' but required in type '{ '1.0': string; }'. +!!! error TS2741: Property ''1.0'' is missing in type '{ '1': string; }' but required in type '{ '1.0': string; }'. !!! related TS2728 tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersStringNumericNames.ts:18:16: ''1.0'' is declared here. b2 = a2; ~~ -!!! error TS2741: Property ''1'' is missing in type '{ '1.0': string; }' but required in type '{ 1: string; }'. +!!! error TS2741: Property ''1'' is missing in type '{ '1.0': string; }' but required in type '{ '1': string; }'. !!! related TS2728 tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersStringNumericNames.ts:19:16: ''1'' is declared here. a2 = b; // ok a2 = t2; // ok diff --git a/tests/baselines/reference/assignmentCompatWithObjectMembersStringNumericNames.types b/tests/baselines/reference/assignmentCompatWithObjectMembersStringNumericNames.types index 6f10223d69cc1..be89c806241b8 100644 --- a/tests/baselines/reference/assignmentCompatWithObjectMembersStringNumericNames.types +++ b/tests/baselines/reference/assignmentCompatWithObjectMembersStringNumericNames.types @@ -50,8 +50,8 @@ module JustStrings { >'' : "" var b2 = { '1': '' }; ->b2 : { 1: string; } ->{ '1': '' } : { 1: string; } +>b2 : { '1': string; } +>{ '1': '' } : { '1': string; } >'1' : string >'' : "" @@ -126,13 +126,13 @@ module JustStrings { >a2 : { '1.0': string; } a2 = b2; ->a2 = b2 : { 1: string; } +>a2 = b2 : { '1': string; } >a2 : { '1.0': string; } ->b2 : { 1: string; } +>b2 : { '1': string; } b2 = a2; >b2 = a2 : { '1.0': string; } ->b2 : { 1: string; } +>b2 : { '1': string; } >a2 : { '1.0': string; } a2 = b; // ok diff --git a/tests/baselines/reference/assignmentIndexedToPrimitives.errors.txt b/tests/baselines/reference/assignmentIndexedToPrimitives.errors.txt index 11d5839042a52..88c822f6dcb60 100644 --- a/tests/baselines/reference/assignmentIndexedToPrimitives.errors.txt +++ b/tests/baselines/reference/assignmentIndexedToPrimitives.errors.txt @@ -8,7 +8,7 @@ tests/cases/compiler/assignmentIndexedToPrimitives.ts(8,7): error TS2322: Type ' tests/cases/compiler/assignmentIndexedToPrimitives.ts(9,7): error TS2322: Type 'string[]' is not assignable to type '"01"'. tests/cases/compiler/assignmentIndexedToPrimitives.ts(11,7): error TS2322: Type '{ 0: number; }' is not assignable to type 'number'. tests/cases/compiler/assignmentIndexedToPrimitives.ts(13,7): error TS2322: Type '{ 0: number; }' is not assignable to type 'string'. -tests/cases/compiler/assignmentIndexedToPrimitives.ts(14,7): error TS2322: Type '{ 0: number; }' is not assignable to type 'string'. +tests/cases/compiler/assignmentIndexedToPrimitives.ts(14,7): error TS2322: Type '{ "0": number; }' is not assignable to type 'string'. tests/cases/compiler/assignmentIndexedToPrimitives.ts(15,7): error TS2322: Type '{ 0: string; }' is not assignable to type 'string'. @@ -48,7 +48,7 @@ tests/cases/compiler/assignmentIndexedToPrimitives.ts(15,7): error TS2322: Type !!! error TS2322: Type '{ 0: number; }' is not assignable to type 'string'. const so2: string = { "0": 1 }; ~~~ -!!! error TS2322: Type '{ 0: number; }' is not assignable to type 'string'. +!!! error TS2322: Type '{ "0": number; }' is not assignable to type 'string'. const so3: string = { 0: "1" }; ~~~ !!! error TS2322: Type '{ 0: string; }' is not assignable to type 'string'. diff --git a/tests/baselines/reference/assignmentIndexedToPrimitives.types b/tests/baselines/reference/assignmentIndexedToPrimitives.types index b380008f78d17..7c36c89b1e9fa 100644 --- a/tests/baselines/reference/assignmentIndexedToPrimitives.types +++ b/tests/baselines/reference/assignmentIndexedToPrimitives.types @@ -56,7 +56,7 @@ const so1: string = { 0: 1 }; const so2: string = { "0": 1 }; >so2 : string ->{ "0": 1 } : { 0: number; } +>{ "0": 1 } : { "0": number; } >"0" : number >1 : 1 diff --git a/tests/baselines/reference/deepKeysIndexing.types b/tests/baselines/reference/deepKeysIndexing.types index 2ab3088178153..d76919c719cf0 100644 --- a/tests/baselines/reference/deepKeysIndexing.types +++ b/tests/baselines/reference/deepKeysIndexing.types @@ -33,7 +33,7 @@ type keys2workaround = Extract< interface Foo extends DeepObject { a: { ->a : { 1: 123; 2: string; 3: boolean; } +>a : { "1": 123; "2": string; "3": boolean; } "1": 123; >"1" : 123 diff --git a/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES5.types b/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES5.types index fe69d2d49aeeb..629c56389c5ce 100644 --- a/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES5.types +++ b/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES5.types @@ -5,7 +5,7 @@ >({ "1": "one", "2": "two" } as { [key: string]: string })[x] : string >({ "1": "one", "2": "two" } as { [key: string]: string }) : { [key: string]: string; } >{ "1": "one", "2": "two" } as { [key: string]: string } : { [key: string]: string; } ->{ "1": "one", "2": "two" } : { 1: string; 2: string; } +>{ "1": "one", "2": "two" } : { "1": string; "2": string; } >"1" : string >"one" : "one" >"2" : string @@ -19,7 +19,7 @@ >({ "1": "one", "2": "two" } as { [key: string]: string }).x : string >({ "1": "one", "2": "two" } as { [key: string]: string }) : { [key: string]: string; } >{ "1": "one", "2": "two" } as { [key: string]: string } : { [key: string]: string; } ->{ "1": "one", "2": "two" } : { 1: string; 2: string; } +>{ "1": "one", "2": "two" } : { "1": string; "2": string; } >"1" : string >"one" : "one" >"2" : string diff --git a/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES6.types b/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES6.types index 3f64b945c1db2..47093bbffe4a7 100644 --- a/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES6.types +++ b/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES6.types @@ -5,7 +5,7 @@ >({ "1": "one", "2": "two" } as { [key: string]: string })[x] : string >({ "1": "one", "2": "two" } as { [key: string]: string }) : { [key: string]: string; } >{ "1": "one", "2": "two" } as { [key: string]: string } : { [key: string]: string; } ->{ "1": "one", "2": "two" } : { 1: string; 2: string; } +>{ "1": "one", "2": "two" } : { "1": string; "2": string; } >"1" : string >"one" : "one" >"2" : string @@ -19,7 +19,7 @@ >({ "1": "one", "2": "two" } as { [key: string]: string }).x : string >({ "1": "one", "2": "two" } as { [key: string]: string }) : { [key: string]: string; } >{ "1": "one", "2": "two" } as { [key: string]: string } : { [key: string]: string; } ->{ "1": "one", "2": "two" } : { 1: string; 2: string; } +>{ "1": "one", "2": "two" } : { "1": string; "2": string; } >"1" : string >"one" : "one" >"2" : string diff --git a/tests/baselines/reference/enumKeysQuotedAsObjectPropertiesInDeclarationEmit.js b/tests/baselines/reference/enumKeysQuotedAsObjectPropertiesInDeclarationEmit.js index c3a36c0ba7180..a8cbbc231616e 100644 --- a/tests/baselines/reference/enumKeysQuotedAsObjectPropertiesInDeclarationEmit.js +++ b/tests/baselines/reference/enumKeysQuotedAsObjectPropertiesInDeclarationEmit.js @@ -51,9 +51,9 @@ export declare enum MouseButton { } export declare const DOMMouseButton: { '-1': MouseButton; - 0: MouseButton; - 1: MouseButton; - 2: MouseButton; - 3: MouseButton; - 4: MouseButton; + "0": MouseButton; + "1": MouseButton; + "2": MouseButton; + "3": MouseButton; + "4": MouseButton; }; diff --git a/tests/baselines/reference/enumKeysQuotedAsObjectPropertiesInDeclarationEmit.types b/tests/baselines/reference/enumKeysQuotedAsObjectPropertiesInDeclarationEmit.types index 955e942460ff5..2c54e07627708 100644 --- a/tests/baselines/reference/enumKeysQuotedAsObjectPropertiesInDeclarationEmit.types +++ b/tests/baselines/reference/enumKeysQuotedAsObjectPropertiesInDeclarationEmit.types @@ -28,8 +28,8 @@ export enum MouseButton { } export const DOMMouseButton = { ->DOMMouseButton : { '-1': MouseButton; 0: MouseButton; 1: MouseButton; 2: MouseButton; 3: MouseButton; 4: MouseButton; } ->{ '-1': MouseButton.NO_BUTTON, "0": MouseButton.LEFT_BUTTON, "1": MouseButton.MIDDLE_BUTTON, "2": MouseButton.RIGHT_BUTTON, "3": MouseButton.XBUTTON1_BUTTON, "4": MouseButton.XBUTTON2_BUTTON,} : { '-1': MouseButton; 0: MouseButton; 1: MouseButton; 2: MouseButton; 3: MouseButton; 4: MouseButton; } +>DOMMouseButton : { '-1': MouseButton; "0": MouseButton; "1": MouseButton; "2": MouseButton; "3": MouseButton; "4": MouseButton; } +>{ '-1': MouseButton.NO_BUTTON, "0": MouseButton.LEFT_BUTTON, "1": MouseButton.MIDDLE_BUTTON, "2": MouseButton.RIGHT_BUTTON, "3": MouseButton.XBUTTON1_BUTTON, "4": MouseButton.XBUTTON2_BUTTON,} : { '-1': MouseButton; "0": MouseButton; "1": MouseButton; "2": MouseButton; "3": MouseButton; "4": MouseButton; } '-1': MouseButton.NO_BUTTON, >'-1' : MouseButton diff --git a/tests/baselines/reference/inferringAnyFunctionType1.types b/tests/baselines/reference/inferringAnyFunctionType1.types index 2e0f33636968d..8f56d4a549a90 100644 --- a/tests/baselines/reference/inferringAnyFunctionType1.types +++ b/tests/baselines/reference/inferringAnyFunctionType1.types @@ -1,6 +1,6 @@ === tests/cases/compiler/inferringAnyFunctionType1.ts === function f number }>(p: T): T { ->f : number; }>(p: T) => T +>f : number; }>(p: T) => T >"0" : (p1: number) => number >p1 : number >p : T @@ -12,7 +12,7 @@ function f number }>(p: T): T { var v = f([x => x]); >v : [(x: number) => number] >f([x => x]) : [(x: number) => number] ->f : number; }>(p: T) => T +>f : number; }>(p: T) => T >[x => x] : [(x: number) => number] >x => x : (x: number) => number >x : number diff --git a/tests/baselines/reference/literalsInComputedProperties1.types b/tests/baselines/reference/literalsInComputedProperties1.types index de2bdf113d43e..a1444fbbd7610 100644 --- a/tests/baselines/reference/literalsInComputedProperties1.types +++ b/tests/baselines/reference/literalsInComputedProperties1.types @@ -1,7 +1,7 @@ === tests/cases/compiler/literalsInComputedProperties1.ts === let x = { ->x : { 1: number; 2: number; 3: number; 4: number; } ->{ 1:1, [2]:1, "3":1, ["4"]:1} : { 1: number; 2: number; 3: number; 4: number; } +>x : { 1: number; 2: number; "3": number; 4: number; } +>{ 1:1, [2]:1, "3":1, ["4"]:1} : { 1: number; 2: number; "3": number; 4: number; } 1:1, >1 : number @@ -25,7 +25,7 @@ x[1].toExponential(); >x[1].toExponential() : string >x[1].toExponential : (fractionDigits?: number) => string >x[1] : number ->x : { 1: number; 2: number; 3: number; 4: number; } +>x : { 1: number; 2: number; "3": number; 4: number; } >1 : 1 >toExponential : (fractionDigits?: number) => string @@ -33,7 +33,7 @@ x[2].toExponential(); >x[2].toExponential() : string >x[2].toExponential : (fractionDigits?: number) => string >x[2] : number ->x : { 1: number; 2: number; 3: number; 4: number; } +>x : { 1: number; 2: number; "3": number; 4: number; } >2 : 2 >toExponential : (fractionDigits?: number) => string @@ -41,7 +41,7 @@ x[3].toExponential(); >x[3].toExponential() : string >x[3].toExponential : (fractionDigits?: number) => string >x[3] : number ->x : { 1: number; 2: number; 3: number; 4: number; } +>x : { 1: number; 2: number; "3": number; 4: number; } >3 : 3 >toExponential : (fractionDigits?: number) => string @@ -49,7 +49,7 @@ x[4].toExponential(); >x[4].toExponential() : string >x[4].toExponential : (fractionDigits?: number) => string >x[4] : number ->x : { 1: number; 2: number; 3: number; 4: number; } +>x : { 1: number; 2: number; "3": number; 4: number; } >4 : 4 >toExponential : (fractionDigits?: number) => string diff --git a/tests/baselines/reference/multipleNumericIndexers.types b/tests/baselines/reference/multipleNumericIndexers.types index 60a88222718b6..1223f5bb0026c 100644 --- a/tests/baselines/reference/multipleNumericIndexers.types +++ b/tests/baselines/reference/multipleNumericIndexers.types @@ -39,7 +39,7 @@ var b: { >x : number } = { 1: '', "2": '' } ->{ 1: '', "2": '' } : { 1: string; 2: string; } +>{ 1: '', "2": '' } : { 1: string; "2": string; } >1 : string >'' : "" >"2" : string diff --git a/tests/baselines/reference/noImplicitAnyIndexing.types b/tests/baselines/reference/noImplicitAnyIndexing.types index ad505a3eb579f..2bd27cb0c0b47 100644 --- a/tests/baselines/reference/noImplicitAnyIndexing.types +++ b/tests/baselines/reference/noImplicitAnyIndexing.types @@ -82,7 +82,7 @@ interface MyMap { var m: MyMap = { >m : MyMap ->{ "0": 0, "1": 1, "2": 2, "Okay that's enough for today.": NaN} : { 0: number; 1: number; 2: number; "Okay that's enough for today.": number; } +>{ "0": 0, "1": 1, "2": 2, "Okay that's enough for today.": NaN} : { "0": number; "1": number; "2": number; "Okay that's enough for today.": number; } "0": 0, >"0" : number diff --git a/tests/baselines/reference/noImplicitAnyIndexingSuppressed.types b/tests/baselines/reference/noImplicitAnyIndexingSuppressed.types index b1259fabf0346..fe10152e90c70 100644 --- a/tests/baselines/reference/noImplicitAnyIndexingSuppressed.types +++ b/tests/baselines/reference/noImplicitAnyIndexingSuppressed.types @@ -81,7 +81,7 @@ interface MyMap { var m: MyMap = { >m : MyMap ->{ "0": 0, "1": 1, "2": 2, "Okay that's enough for today.": NaN} : { 0: number; 1: number; 2: number; "Okay that's enough for today.": number; } +>{ "0": 0, "1": 1, "2": 2, "Okay that's enough for today.": NaN} : { "0": number; "1": number; "2": number; "Okay that's enough for today.": number; } "0": 0, >"0" : number diff --git a/tests/baselines/reference/normalizedIntersectionTooComplex.types b/tests/baselines/reference/normalizedIntersectionTooComplex.types index 985227fbc9431..a5069b6af28f0 100644 --- a/tests/baselines/reference/normalizedIntersectionTooComplex.types +++ b/tests/baselines/reference/normalizedIntersectionTooComplex.types @@ -20,112 +20,112 @@ type CtorOf = (arg: UnionToIntersection) => T; interface Big { "0": { common?: string; "0"?: number, ref?: Obj | Func; } ->"0" : { common?: string | undefined; 0?: number | undefined; ref?: Obj | Func | undefined; } +>"0" : { common?: string | undefined; "0"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"0" : number | undefined ->ref : Obj<{ common?: string | undefined; 0?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 0?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "0"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "0"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "1": { common?: string; "1"?: number, ref?: Obj | Func; } ->"1" : { common?: string | undefined; 1?: number | undefined; ref?: Obj | Func | undefined; } +>"1" : { common?: string | undefined; "1"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"1" : number | undefined ->ref : Obj<{ common?: string | undefined; 1?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 1?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "1"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "1"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "2": { common?: string; "2"?: number, ref?: Obj | Func; } ->"2" : { common?: string | undefined; 2?: number | undefined; ref?: Obj | Func | undefined; } +>"2" : { common?: string | undefined; "2"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"2" : number | undefined ->ref : Obj<{ common?: string | undefined; 2?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 2?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "2"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "2"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "3": { common?: string; "3"?: number, ref?: Obj | Func; } ->"3" : { common?: string | undefined; 3?: number | undefined; ref?: Obj | Func | undefined; } +>"3" : { common?: string | undefined; "3"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"3" : number | undefined ->ref : Obj<{ common?: string | undefined; 3?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 3?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "3"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "3"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "4": { common?: string; "4"?: number, ref?: Obj | Func; } ->"4" : { common?: string | undefined; 4?: number | undefined; ref?: Obj | Func | undefined; } +>"4" : { common?: string | undefined; "4"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"4" : number | undefined ->ref : Obj<{ common?: string | undefined; 4?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 4?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "4"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "4"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "5": { common?: string; "5"?: number, ref?: Obj | Func; } ->"5" : { common?: string | undefined; 5?: number | undefined; ref?: Obj | Func | undefined; } +>"5" : { common?: string | undefined; "5"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"5" : number | undefined ->ref : Obj<{ common?: string | undefined; 5?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 5?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "5"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "5"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "6": { common?: string; "6"?: number, ref?: Obj | Func; } ->"6" : { common?: string | undefined; 6?: number | undefined; ref?: Obj | Func | undefined; } +>"6" : { common?: string | undefined; "6"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"6" : number | undefined ->ref : Obj<{ common?: string | undefined; 6?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 6?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "6"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "6"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "7": { common?: string; "7"?: number, ref?: Obj | Func; } ->"7" : { common?: string | undefined; 7?: number | undefined; ref?: Obj | Func | undefined; } +>"7" : { common?: string | undefined; "7"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"7" : number | undefined ->ref : Obj<{ common?: string | undefined; 7?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 7?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "7"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "7"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "8": { common?: string; "8"?: number, ref?: Obj | Func; } ->"8" : { common?: string | undefined; 8?: number | undefined; ref?: Obj | Func | undefined; } +>"8" : { common?: string | undefined; "8"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"8" : number | undefined ->ref : Obj<{ common?: string | undefined; 8?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 8?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "8"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "8"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "9": { common?: string; "9"?: number, ref?: Obj | Func; } ->"9" : { common?: string | undefined; 9?: number | undefined; ref?: Obj | Func | undefined; } +>"9" : { common?: string | undefined; "9"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"9" : number | undefined ->ref : Obj<{ common?: string | undefined; 9?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 9?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "9"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "9"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "10": { common?: string; "10"?: number, ref?: Obj | Func; } ->"10" : { common?: string | undefined; 10?: number | undefined; ref?: Obj | Func | undefined; } +>"10" : { common?: string | undefined; "10"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"10" : number | undefined ->ref : Obj<{ common?: string | undefined; 10?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 10?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "10"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "10"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "11": { common?: string; "11"?: number, ref?: Obj | Func; } ->"11" : { common?: string | undefined; 11?: number | undefined; ref?: Obj | Func | undefined; } +>"11" : { common?: string | undefined; "11"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"11" : number | undefined ->ref : Obj<{ common?: string | undefined; 11?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 11?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "11"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "11"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "12": { common?: string; "12"?: number, ref?: Obj | Func; } ->"12" : { common?: string | undefined; 12?: number | undefined; ref?: Obj | Func | undefined; } +>"12" : { common?: string | undefined; "12"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"12" : number | undefined ->ref : Obj<{ common?: string | undefined; 12?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 12?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "12"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "12"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "13": { common?: string; "13"?: number, ref?: Obj | Func; } ->"13" : { common?: string | undefined; 13?: number | undefined; ref?: Obj | Func | undefined; } +>"13" : { common?: string | undefined; "13"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"13" : number | undefined ->ref : Obj<{ common?: string | undefined; 13?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 13?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "13"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "13"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "14": { common?: string; "14"?: number, ref?: Obj | Func; } ->"14" : { common?: string | undefined; 14?: number | undefined; ref?: Obj | Func | undefined; } +>"14" : { common?: string | undefined; "14"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"14" : number | undefined ->ref : Obj<{ common?: string | undefined; 14?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 14?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "14"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "14"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "15": { common?: string; "15"?: number, ref?: Obj | Func; } ->"15" : { common?: string | undefined; 15?: number | undefined; ref?: Obj | Func | undefined; } +>"15" : { common?: string | undefined; "15"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"15" : number | undefined ->ref : Obj<{ common?: string | undefined; 15?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 15?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "15"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "15"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "16": { common?: string; "16"?: number, ref?: Obj | Func; } ->"16" : { common?: string | undefined; 16?: number | undefined; ref?: Obj | Func | undefined; } +>"16" : { common?: string | undefined; "16"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"16" : number | undefined ->ref : Obj<{ common?: string | undefined; 16?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 16?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "16"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "16"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined "17": { common?: string; "17"?: number, ref?: Obj | Func; } ->"17" : { common?: string | undefined; 17?: number | undefined; ref?: Obj | Func | undefined; } +>"17" : { common?: string | undefined; "17"?: number | undefined; ref?: Obj | Func | undefined; } >common : string | undefined >"17" : number | undefined ->ref : Obj<{ common?: string | undefined; 17?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; 17?: number | undefined; ref?: Obj | Func | undefined; }> | undefined +>ref : Obj<{ common?: string | undefined; "17"?: number | undefined; ref?: Obj | Func | undefined; }> | Func<{ common?: string | undefined; "17"?: number | undefined; ref?: Obj | Func | undefined; }> | undefined } declare function getCtor(comp: T): CtorOf >getCtor : (comp: T) => CtorOf @@ -135,15 +135,15 @@ declare var all: keyof Big; >all : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" const ctor = getCtor(all); ->ctor : CtorOf<{ common?: string | undefined; 0?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 1?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 2?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 3?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 4?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 5?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 6?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 7?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 8?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 9?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 10?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 11?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 12?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 13?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 14?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 15?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 16?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 17?: number | undefined; ref?: Obj | Func | undefined; }> ->getCtor(all) : CtorOf<{ common?: string | undefined; 0?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 1?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 2?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 3?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 4?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 5?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 6?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 7?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 8?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 9?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 10?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 11?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 12?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 13?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 14?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 15?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 16?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 17?: number | undefined; ref?: Obj | Func | undefined; }> +>ctor : CtorOf<{ common?: string | undefined; "0"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Obj | Func | undefined; }> +>getCtor(all) : CtorOf<{ common?: string | undefined; "0"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Obj | Func | undefined; }> >getCtor : (comp: T) => CtorOf >all : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" const comp = ctor({ common: "ok", ref: x => console.log(x) }); ->comp : { common?: string | undefined; 0?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 1?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 2?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 3?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 4?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 5?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 6?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 7?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 8?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 9?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 10?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 11?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 12?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 13?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 14?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 15?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 16?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 17?: number | undefined; ref?: Obj | Func | undefined; } ->ctor({ common: "ok", ref: x => console.log(x) }) : { common?: string | undefined; 0?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 1?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 2?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 3?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 4?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 5?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 6?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 7?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 8?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 9?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 10?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 11?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 12?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 13?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 14?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 15?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 16?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 17?: number | undefined; ref?: Obj | Func | undefined; } ->ctor : CtorOf<{ common?: string | undefined; 0?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 1?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 2?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 3?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 4?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 5?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 6?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 7?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 8?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 9?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 10?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 11?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 12?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 13?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 14?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 15?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 16?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; 17?: number | undefined; ref?: Obj | Func | undefined; }> +>comp : { common?: string | undefined; "0"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Obj | Func | undefined; } +>ctor({ common: "ok", ref: x => console.log(x) }) : { common?: string | undefined; "0"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Obj | Func | undefined; } +>ctor : CtorOf<{ common?: string | undefined; "0"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Obj | Func | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Obj | Func | undefined; }> >{ common: "ok", ref: x => console.log(x) } : { common: string; ref: (x: any) => void; } >common : string >"ok" : "ok" diff --git a/tests/baselines/reference/numericIndexerConstrainsPropertyDeclarations2.types b/tests/baselines/reference/numericIndexerConstrainsPropertyDeclarations2.types index 06e80485a2bd5..73f5f6487682c 100644 --- a/tests/baselines/reference/numericIndexerConstrainsPropertyDeclarations2.types +++ b/tests/baselines/reference/numericIndexerConstrainsPropertyDeclarations2.types @@ -61,7 +61,7 @@ interface Foo2 { } var a: { ->a : { [x: number]: A; 1: A; 2: B; 2.5: B; 3: number; "4.0": string; } +>a : { [x: number]: A; 1: A; 2: B; "2.5": B; 3: number; "4.0": string; } [x: number]: A; >x : number @@ -87,7 +87,7 @@ var a: { var b: { [x: number]: A } = { >b : { [x: number]: A; } >x : number ->{ 1.0: new A(), 2.0: new B(), "2.5": new B(), 3.0: 1, "4.0": ''} : { 1: A; 2: B; 2.5: B; 3: number; "4.0": string; } +>{ 1.0: new A(), 2.0: new B(), "2.5": new B(), 3.0: 1, "4.0": ''} : { 1: A; 2: B; "2.5": B; 3: number; "4.0": string; } 1.0: new A(), >1.0 : A diff --git a/tests/baselines/reference/numericIndexingResults.types b/tests/baselines/reference/numericIndexingResults.types index ebaee185cf844..f4e0d168e6e22 100644 --- a/tests/baselines/reference/numericIndexingResults.types +++ b/tests/baselines/reference/numericIndexingResults.types @@ -104,7 +104,7 @@ var r6 = i[3]; >3 : 3 var a: { ->a : { [x: number]: string; 1: string; 2: string; } +>a : { [x: number]: string; 1: string; "2": string; } [x: number]: string; >x : number @@ -119,43 +119,43 @@ var a: { var r1 = a['1']; >r1 : string >a['1'] : string ->a : { [x: number]: string; 1: string; 2: string; } +>a : { [x: number]: string; 1: string; "2": string; } >'1' : "1" var r2 = a['2']; >r2 : string >a['2'] : string ->a : { [x: number]: string; 1: string; 2: string; } +>a : { [x: number]: string; 1: string; "2": string; } >'2' : "2" var r3 = a['3']; >r3 : error >a['3'] : error ->a : { [x: number]: string; 1: string; 2: string; } +>a : { [x: number]: string; 1: string; "2": string; } >'3' : "3" var r4 = a[1]; >r4 : string >a[1] : string ->a : { [x: number]: string; 1: string; 2: string; } +>a : { [x: number]: string; 1: string; "2": string; } >1 : 1 var r5 = a[2]; >r5 : string >a[2] : string ->a : { [x: number]: string; 1: string; 2: string; } +>a : { [x: number]: string; 1: string; "2": string; } >2 : 2 var r6 = a[3]; >r6 : string >a[3] : string ->a : { [x: number]: string; 1: string; 2: string; } +>a : { [x: number]: string; 1: string; "2": string; } >3 : 3 var b: { [x: number]: string } = { 1: '', "2": '' } >b : { [x: number]: string; } >x : number ->{ 1: '', "2": '' } : { 1: string; 2: string; } +>{ 1: '', "2": '' } : { 1: string; "2": string; } >1 : string >'' : "" >"2" : string @@ -198,11 +198,11 @@ var r6 = b[3]; >3 : 3 var b2: { [x: number]: string; 1: string; "2": string; } = { 1: '', "2": '' } ->b2 : { [x: number]: string; 1: string; 2: string; } +>b2 : { [x: number]: string; 1: string; "2": string; } >x : number >1 : string >"2" : string ->{ 1: '', "2": '' } : { 1: string; 2: string; } +>{ 1: '', "2": '' } : { 1: string; "2": string; } >1 : string >'' : "" >"2" : string @@ -211,36 +211,36 @@ var b2: { [x: number]: string; 1: string; "2": string; } = { 1: '', "2": '' } var r1b = b2['1']; >r1b : string >b2['1'] : string ->b2 : { [x: number]: string; 1: string; 2: string; } +>b2 : { [x: number]: string; 1: string; "2": string; } >'1' : "1" var r2b = b2['2']; >r2b : string >b2['2'] : string ->b2 : { [x: number]: string; 1: string; 2: string; } +>b2 : { [x: number]: string; 1: string; "2": string; } >'2' : "2" var r3 = b2['3']; >r3 : error >b2['3'] : error ->b2 : { [x: number]: string; 1: string; 2: string; } +>b2 : { [x: number]: string; 1: string; "2": string; } >'3' : "3" var r4 = b2[1]; >r4 : string >b2[1] : string ->b2 : { [x: number]: string; 1: string; 2: string; } +>b2 : { [x: number]: string; 1: string; "2": string; } >1 : 1 var r5 = b2[2]; >r5 : string >b2[2] : string ->b2 : { [x: number]: string; 1: string; 2: string; } +>b2 : { [x: number]: string; 1: string; "2": string; } >2 : 2 var r6 = b2[3]; >r6 : string >b2[3] : string ->b2 : { [x: number]: string; 1: string; 2: string; } +>b2 : { [x: number]: string; 1: string; "2": string; } >3 : 3 diff --git a/tests/baselines/reference/objectLiteralErrors.types b/tests/baselines/reference/objectLiteralErrors.types index d0e3349a32df4..271b657fd630e 100644 --- a/tests/baselines/reference/objectLiteralErrors.types +++ b/tests/baselines/reference/objectLiteralErrors.types @@ -228,8 +228,8 @@ var f10 = { "a": 0, get 'a'() { return 0; } }; >0 : 0 var f11 = { 1.0: 0, get '1'() { return 0; } }; ->f11 : { readonly 1: number; } ->{ 1.0: 0, get '1'() { return 0; } } : { readonly 1: number; } +>f11 : { readonly '1': number; } +>{ 1.0: 0, get '1'() { return 0; } } : { readonly '1': number; } >1.0 : number >0 : 0 >'1' : number diff --git a/tests/baselines/reference/objectLiteralExcessProperties.types b/tests/baselines/reference/objectLiteralExcessProperties.types index 1ba6dffff0b12..812f48c89048c 100644 --- a/tests/baselines/reference/objectLiteralExcessProperties.types +++ b/tests/baselines/reference/objectLiteralExcessProperties.types @@ -84,7 +84,7 @@ interface Indexed { var b10: Indexed = { 0: { }, '1': { } }; // ok >b10 : Indexed ->{ 0: { }, '1': { } } : { 0: {}; 1: {}; } +>{ 0: { }, '1': { } } : { 0: {}; '1': {}; } >0 : {} >{ } : {} >'1' : {} diff --git a/tests/baselines/reference/objectTypeWithStringNamedNumericProperty.types b/tests/baselines/reference/objectTypeWithStringNamedNumericProperty.types index 156ad55404338..a8eb2ce97d56b 100644 --- a/tests/baselines/reference/objectTypeWithStringNamedNumericProperty.types +++ b/tests/baselines/reference/objectTypeWithStringNamedNumericProperty.types @@ -278,7 +278,7 @@ var r13 = i[-01] >01 : 1 var a: { ->a : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } "0.1": void; >"0.1" : void @@ -308,19 +308,19 @@ var a: { var r1 = a['0.1']; >r1 : void >a['0.1'] : void ->a : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } >'0.1' : "0.1" var r2 = a['.1']; >r2 : Object >a['.1'] : Object ->a : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } >'.1' : ".1" var r3 = a['1']; >r3 : number >a['1'] : number ->a : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } >'1' : "1" var r3 = c[1]; @@ -332,7 +332,7 @@ var r3 = c[1]; var r4 = a['1.']; >r4 : string >a['1.'] : string ->a : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } >'1.' : "1." var r3 = c[1.]; // same as indexing by 1 when done numerically @@ -344,13 +344,13 @@ var r3 = c[1.]; // same as indexing by 1 when done numerically var r5 = a['1..']; >r5 : boolean >a['1..'] : boolean ->a : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } >'1..' : "1.." var r6 = a['1.0']; >r6 : Date >a['1.0'] : Date ->a : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } >'1.0' : "1.0" var r3 = c[1.0]; // same as indexing by 1 when done numerically @@ -413,8 +413,8 @@ var r13 = i[-01] >01 : 1 var b = { ->b : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } ->{ "0.1": null, ".1": new Object(), "1": 1, "1.": "", "1..": true, "1.0": new Date(), "-1.0": /123/, "-1": Date} : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>{ "0.1": null, ".1": new Object(), "1": 1, "1.": "", "1..": true, "1.0": new Date(), "-1.0": /123/, "-1": Date} : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } "0.1": null, >"0.1" : void @@ -456,19 +456,19 @@ var b = { var r1 = b['0.1']; >r1 : void >b['0.1'] : void ->b : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } >'0.1' : "0.1" var r2 = b['.1']; >r2 : Object >b['.1'] : Object ->b : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } >'.1' : ".1" var r3 = b['1']; >r3 : number >b['1'] : number ->b : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } >'1' : "1" var r3 = c[1]; @@ -480,7 +480,7 @@ var r3 = c[1]; var r4 = b['1.']; >r4 : string >b['1.'] : string ->b : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } >'1.' : "1." var r3 = c[1.]; // same as indexing by 1 when done numerically @@ -492,13 +492,13 @@ var r3 = c[1.]; // same as indexing by 1 when done numerically var r5 = b['1..']; >r5 : boolean >b['1..'] : boolean ->b : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } >'1..' : "1.." var r6 = b['1.0']; >r6 : Date >b['1.0'] : Date ->b : { 0.1: void; ".1": Object; 1: number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } >'1.0' : "1.0" var r3 = c[1.0]; // same as indexing by 1 when done numerically