Properly preserve numeric string named properties in declaration files (#39658)

* Properly preserve names of properties with numeric literal strings

* Accept new baselines
This commit is contained in:
Anders Hejlsberg
2020-07-20 10:36:46 -07:00
committed by GitHub
parent 3b22339df8
commit 5ae4b5d715
21 changed files with 122 additions and 122 deletions
+10 -10
View File
@@ -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);
}
@@ -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
@@ -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
@@ -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'.
@@ -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
@@ -33,7 +33,7 @@ type keys2workaround<O extends DeepObject, K1 extends keyof O> = Extract<
interface Foo extends DeepObject {
a: {
>a : { 1: 123; 2: string; 3: boolean; }
>a : { "1": 123; "2": string; "3": boolean; }
"1": 123;
>"1" : 123
@@ -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
@@ -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
@@ -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;
};
@@ -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
@@ -1,6 +1,6 @@
=== tests/cases/compiler/inferringAnyFunctionType1.ts ===
function f<T extends { "0": (p1: number) => number }>(p: T): T {
>f : <T extends { 0: (p1: number) => number; }>(p: T) => T
>f : <T extends { "0": (p1: number) => number; }>(p: T) => T
>"0" : (p1: number) => number
>p1 : number
>p : T
@@ -12,7 +12,7 @@ function f<T extends { "0": (p1: number) => number }>(p: T): T {
var v = f([x => x]);
>v : [(x: number) => number]
>f([x => x]) : [(x: number) => number]
>f : <T extends { 0: (p1: number) => number; }>(p: T) => T
>f : <T extends { "0": (p1: number) => number; }>(p: T) => T
>[x => x] : [(x: number) => number]
>x => x : (x: number) => number
>x : number
@@ -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
@@ -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
@@ -82,7 +82,7 @@ interface MyMap<T> {
var m: MyMap<number> = {
>m : MyMap<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, "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
@@ -81,7 +81,7 @@ interface MyMap<T> {
var m: MyMap<number> = {
>m : MyMap<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, "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
@@ -20,112 +20,112 @@ type CtorOf<T> = (arg: UnionToIntersection<T>) => T;
interface Big {
"0": { common?: string; "0"?: number, ref?: Obj<Big["0"]> | Func<Big["0"]>; }
>"0" : { common?: string | undefined; 0?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"0" : { common?: string | undefined; "0"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"0" : number | undefined
>ref : Obj<{ common?: string | undefined; 0?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 0?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "0"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "0"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"1": { common?: string; "1"?: number, ref?: Obj<Big["1"]> | Func<Big["1"]>; }
>"1" : { common?: string | undefined; 1?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"1" : { common?: string | undefined; "1"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"1" : number | undefined
>ref : Obj<{ common?: string | undefined; 1?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 1?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "1"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "1"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"2": { common?: string; "2"?: number, ref?: Obj<Big["2"]> | Func<Big["2"]>; }
>"2" : { common?: string | undefined; 2?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"2" : { common?: string | undefined; "2"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"2" : number | undefined
>ref : Obj<{ common?: string | undefined; 2?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 2?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "2"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "2"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"3": { common?: string; "3"?: number, ref?: Obj<Big["3"]> | Func<Big["3"]>; }
>"3" : { common?: string | undefined; 3?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"3" : { common?: string | undefined; "3"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"3" : number | undefined
>ref : Obj<{ common?: string | undefined; 3?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 3?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "3"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "3"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"4": { common?: string; "4"?: number, ref?: Obj<Big["4"]> | Func<Big["4"]>; }
>"4" : { common?: string | undefined; 4?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"4" : { common?: string | undefined; "4"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"4" : number | undefined
>ref : Obj<{ common?: string | undefined; 4?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 4?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "4"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "4"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"5": { common?: string; "5"?: number, ref?: Obj<Big["5"]> | Func<Big["5"]>; }
>"5" : { common?: string | undefined; 5?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"5" : { common?: string | undefined; "5"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"5" : number | undefined
>ref : Obj<{ common?: string | undefined; 5?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 5?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "5"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "5"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"6": { common?: string; "6"?: number, ref?: Obj<Big["6"]> | Func<Big["6"]>; }
>"6" : { common?: string | undefined; 6?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"6" : { common?: string | undefined; "6"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"6" : number | undefined
>ref : Obj<{ common?: string | undefined; 6?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 6?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "6"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "6"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"7": { common?: string; "7"?: number, ref?: Obj<Big["7"]> | Func<Big["7"]>; }
>"7" : { common?: string | undefined; 7?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"7" : { common?: string | undefined; "7"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"7" : number | undefined
>ref : Obj<{ common?: string | undefined; 7?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 7?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "7"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "7"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"8": { common?: string; "8"?: number, ref?: Obj<Big["8"]> | Func<Big["8"]>; }
>"8" : { common?: string | undefined; 8?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"8" : { common?: string | undefined; "8"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"8" : number | undefined
>ref : Obj<{ common?: string | undefined; 8?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 8?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "8"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "8"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"9": { common?: string; "9"?: number, ref?: Obj<Big["9"]> | Func<Big["9"]>; }
>"9" : { common?: string | undefined; 9?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"9" : { common?: string | undefined; "9"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"9" : number | undefined
>ref : Obj<{ common?: string | undefined; 9?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 9?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "9"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "9"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"10": { common?: string; "10"?: number, ref?: Obj<Big["10"]> | Func<Big["10"]>; }
>"10" : { common?: string | undefined; 10?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"10" : { common?: string | undefined; "10"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"10" : number | undefined
>ref : Obj<{ common?: string | undefined; 10?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 10?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "10"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "10"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"11": { common?: string; "11"?: number, ref?: Obj<Big["11"]> | Func<Big["11"]>; }
>"11" : { common?: string | undefined; 11?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"11" : { common?: string | undefined; "11"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"11" : number | undefined
>ref : Obj<{ common?: string | undefined; 11?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 11?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "11"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "11"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"12": { common?: string; "12"?: number, ref?: Obj<Big["12"]> | Func<Big["12"]>; }
>"12" : { common?: string | undefined; 12?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"12" : { common?: string | undefined; "12"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"12" : number | undefined
>ref : Obj<{ common?: string | undefined; 12?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 12?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "12"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "12"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"13": { common?: string; "13"?: number, ref?: Obj<Big["13"]> | Func<Big["13"]>; }
>"13" : { common?: string | undefined; 13?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"13" : { common?: string | undefined; "13"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"13" : number | undefined
>ref : Obj<{ common?: string | undefined; 13?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 13?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "13"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "13"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"14": { common?: string; "14"?: number, ref?: Obj<Big["14"]> | Func<Big["14"]>; }
>"14" : { common?: string | undefined; 14?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"14" : { common?: string | undefined; "14"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"14" : number | undefined
>ref : Obj<{ common?: string | undefined; 14?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 14?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "14"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "14"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"15": { common?: string; "15"?: number, ref?: Obj<Big["15"]> | Func<Big["15"]>; }
>"15" : { common?: string | undefined; 15?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"15" : { common?: string | undefined; "15"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"15" : number | undefined
>ref : Obj<{ common?: string | undefined; 15?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 15?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "15"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "15"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"16": { common?: string; "16"?: number, ref?: Obj<Big["16"]> | Func<Big["16"]>; }
>"16" : { common?: string | undefined; 16?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"16" : { common?: string | undefined; "16"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"16" : number | undefined
>ref : Obj<{ common?: string | undefined; 16?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 16?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "16"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "16"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
"17": { common?: string; "17"?: number, ref?: Obj<Big["17"]> | Func<Big["17"]>; }
>"17" : { common?: string | undefined; 17?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>"17" : { common?: string | undefined; "17"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>common : string | undefined
>"17" : number | undefined
>ref : Obj<{ common?: string | undefined; 17?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; 17?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
>ref : Obj<{ common?: string | undefined; "17"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | Func<{ common?: string | undefined; "17"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }> | undefined
}
declare function getCtor<T extends keyof Big>(comp: T): CtorOf<Big[T]>
>getCtor : <T extends "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17">(comp: T) => CtorOf<Big[T]>
@@ -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<any> | Func<any> | undefined; } | { common?: string | undefined; 1?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 2?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 3?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 4?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 5?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 6?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 7?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 8?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 9?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 10?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 11?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 12?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 13?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 14?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 15?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 16?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 17?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }>
>getCtor(all) : CtorOf<{ common?: string | undefined; 0?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 1?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 2?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 3?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 4?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 5?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 6?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 7?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 8?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 9?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 10?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 11?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 12?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 13?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 14?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 15?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 16?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 17?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }>
>ctor : CtorOf<{ common?: string | undefined; "0"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }>
>getCtor(all) : CtorOf<{ common?: string | undefined; "0"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }>
>getCtor : <T extends "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17">(comp: T) => CtorOf<Big[T]>
>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<any> | Func<any> | undefined; } | { common?: string | undefined; 1?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 2?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 3?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 4?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 5?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 6?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 7?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 8?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 9?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 10?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 11?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 12?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 13?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 14?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 15?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 16?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 17?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>ctor({ common: "ok", ref: x => console.log(x) }) : { common?: string | undefined; 0?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 1?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 2?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 3?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 4?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 5?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 6?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 7?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 8?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 9?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 10?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 11?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 12?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 13?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 14?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 15?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 16?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 17?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>ctor : CtorOf<{ common?: string | undefined; 0?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 1?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 2?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 3?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 4?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 5?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 6?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 7?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 8?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 9?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 10?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 11?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 12?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 13?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 14?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 15?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 16?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; 17?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }>
>comp : { common?: string | undefined; "0"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>ctor({ common: "ok", ref: x => console.log(x) }) : { common?: string | undefined; "0"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }
>ctor : CtorOf<{ common?: string | undefined; "0"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "1"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "2"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "3"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "4"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "5"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "6"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "7"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "8"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "9"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "10"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "11"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "12"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "13"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "14"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "15"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "16"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; } | { common?: string | undefined; "17"?: number | undefined; ref?: Obj<any> | Func<any> | undefined; }>
>{ common: "ok", ref: x => console.log(x) } : { common: string; ref: (x: any) => void; }
>common : string
>"ok" : "ok"
@@ -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
@@ -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
@@ -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
@@ -84,7 +84,7 @@ interface Indexed {
var b10: Indexed = { 0: { }, '1': { } }; // ok
>b10 : Indexed
>{ 0: { }, '1': { } } : { 0: {}; 1: {}; }
>{ 0: { }, '1': { } } : { 0: {}; '1': {}; }
>0 : {}
>{ } : {}
>'1' : {}
@@ -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": <void>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": <void>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": <void>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