* Eliminate well-known symbols in the checker: 2021 edition * Actually update the lib text to say unique symbol, too (this is unneeded with compat code in place, but this makes goto-def make more sense) * Add test showing mismatched symbol constructor type interop * Add more test cases for some other related issues this fixes * Revert computed name change * Style comments
968 lines
25 KiB
Plaintext
968 lines
25 KiB
Plaintext
=== tests/cases/compiler/decoratorsOnComputedProperties.ts ===
|
|
function x(o: object, k: PropertyKey) { }
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>o : object
|
|
>k : PropertyKey
|
|
|
|
let i = 0;
|
|
>i : number
|
|
>0 : 0
|
|
|
|
function foo(): string { return ++i + ""; }
|
|
>foo : () => string
|
|
>++i + "" : string
|
|
>++i : number
|
|
>i : number
|
|
>"" : ""
|
|
|
|
const fieldNameA: string = "fieldName1";
|
|
>fieldNameA : string
|
|
>"fieldName1" : "fieldName1"
|
|
|
|
const fieldNameB: string = "fieldName2";
|
|
>fieldNameB : string
|
|
>"fieldName2" : "fieldName2"
|
|
|
|
const fieldNameC: string = "fieldName3";
|
|
>fieldNameC : string
|
|
>"fieldName3" : "fieldName3"
|
|
|
|
class A {
|
|
>A : A
|
|
|
|
@x ["property"]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property"] : any
|
|
>"property" : "property"
|
|
|
|
@x [Symbol.toStringTag]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.toStringTag] : any
|
|
>Symbol.toStringTag : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>toStringTag : unique symbol
|
|
|
|
@x ["property2"]: any = 2;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property2"] : any
|
|
>"property2" : "property2"
|
|
>2 : 2
|
|
|
|
@x [Symbol.iterator]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.iterator] : any
|
|
>Symbol.iterator : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>iterator : unique symbol
|
|
>null : null
|
|
|
|
["property3"]: any;
|
|
>["property3"] : any
|
|
>"property3" : "property3"
|
|
|
|
[Symbol.isConcatSpreadable]: any;
|
|
>[Symbol.isConcatSpreadable] : any
|
|
>Symbol.isConcatSpreadable : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>isConcatSpreadable : unique symbol
|
|
|
|
["property4"]: any = 2;
|
|
>["property4"] : any
|
|
>"property4" : "property4"
|
|
>2 : 2
|
|
|
|
[Symbol.match]: any = null;
|
|
>[Symbol.match] : any
|
|
>Symbol.match : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>match : unique symbol
|
|
>null : null
|
|
|
|
[foo()]: any;
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
>null : null
|
|
|
|
[fieldNameA]: any;
|
|
>[fieldNameA] : any
|
|
>fieldNameA : string
|
|
|
|
@x [fieldNameB]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameB] : any
|
|
>fieldNameB : string
|
|
|
|
@x [fieldNameC]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameC] : any
|
|
>fieldNameC : string
|
|
>null : null
|
|
}
|
|
|
|
void class B {
|
|
>void class B { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; [fieldNameA]: any; @x [fieldNameB]: any; @x [fieldNameC]: any = null;} : undefined
|
|
>class B { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; [fieldNameA]: any; @x [fieldNameB]: any; @x [fieldNameC]: any = null;} : typeof B
|
|
>B : typeof B
|
|
|
|
@x ["property"]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property"] : any
|
|
>"property" : "property"
|
|
|
|
@x [Symbol.toStringTag]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.toStringTag] : any
|
|
>Symbol.toStringTag : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>toStringTag : unique symbol
|
|
|
|
@x ["property2"]: any = 2;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property2"] : any
|
|
>"property2" : "property2"
|
|
>2 : 2
|
|
|
|
@x [Symbol.iterator]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.iterator] : any
|
|
>Symbol.iterator : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>iterator : unique symbol
|
|
>null : null
|
|
|
|
["property3"]: any;
|
|
>["property3"] : any
|
|
>"property3" : "property3"
|
|
|
|
[Symbol.isConcatSpreadable]: any;
|
|
>[Symbol.isConcatSpreadable] : any
|
|
>Symbol.isConcatSpreadable : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>isConcatSpreadable : unique symbol
|
|
|
|
["property4"]: any = 2;
|
|
>["property4"] : any
|
|
>"property4" : "property4"
|
|
>2 : 2
|
|
|
|
[Symbol.match]: any = null;
|
|
>[Symbol.match] : any
|
|
>Symbol.match : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>match : unique symbol
|
|
>null : null
|
|
|
|
[foo()]: any;
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
>null : null
|
|
|
|
[fieldNameA]: any;
|
|
>[fieldNameA] : any
|
|
>fieldNameA : string
|
|
|
|
@x [fieldNameB]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameB] : any
|
|
>fieldNameB : string
|
|
|
|
@x [fieldNameC]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameC] : any
|
|
>fieldNameC : string
|
|
>null : null
|
|
|
|
};
|
|
|
|
class C {
|
|
>C : C
|
|
|
|
@x ["property"]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property"] : any
|
|
>"property" : "property"
|
|
|
|
@x [Symbol.toStringTag]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.toStringTag] : any
|
|
>Symbol.toStringTag : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>toStringTag : unique symbol
|
|
|
|
@x ["property2"]: any = 2;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property2"] : any
|
|
>"property2" : "property2"
|
|
>2 : 2
|
|
|
|
@x [Symbol.iterator]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.iterator] : any
|
|
>Symbol.iterator : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>iterator : unique symbol
|
|
>null : null
|
|
|
|
["property3"]: any;
|
|
>["property3"] : any
|
|
>"property3" : "property3"
|
|
|
|
[Symbol.isConcatSpreadable]: any;
|
|
>[Symbol.isConcatSpreadable] : any
|
|
>Symbol.isConcatSpreadable : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>isConcatSpreadable : unique symbol
|
|
|
|
["property4"]: any = 2;
|
|
>["property4"] : any
|
|
>"property4" : "property4"
|
|
>2 : 2
|
|
|
|
[Symbol.match]: any = null;
|
|
>[Symbol.match] : any
|
|
>Symbol.match : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>match : unique symbol
|
|
>null : null
|
|
|
|
[foo()]: any;
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
>null : null
|
|
|
|
[fieldNameA]: any;
|
|
>[fieldNameA] : any
|
|
>fieldNameA : string
|
|
|
|
@x [fieldNameB]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameB] : any
|
|
>fieldNameB : string
|
|
|
|
@x [fieldNameC]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameC] : any
|
|
>fieldNameC : string
|
|
>null : null
|
|
|
|
["some" + "method"]() {}
|
|
>["some" + "method"] : () => void
|
|
>"some" + "method" : string
|
|
>"some" : "some"
|
|
>"method" : "method"
|
|
}
|
|
|
|
void class D {
|
|
>void class D { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; [fieldNameA]: any; @x [fieldNameB]: any; @x [fieldNameC]: any = null; ["some" + "method"]() {}} : undefined
|
|
>class D { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; [fieldNameA]: any; @x [fieldNameB]: any; @x [fieldNameC]: any = null; ["some" + "method"]() {}} : typeof D
|
|
>D : typeof D
|
|
|
|
@x ["property"]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property"] : any
|
|
>"property" : "property"
|
|
|
|
@x [Symbol.toStringTag]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.toStringTag] : any
|
|
>Symbol.toStringTag : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>toStringTag : unique symbol
|
|
|
|
@x ["property2"]: any = 2;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property2"] : any
|
|
>"property2" : "property2"
|
|
>2 : 2
|
|
|
|
@x [Symbol.iterator]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.iterator] : any
|
|
>Symbol.iterator : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>iterator : unique symbol
|
|
>null : null
|
|
|
|
["property3"]: any;
|
|
>["property3"] : any
|
|
>"property3" : "property3"
|
|
|
|
[Symbol.isConcatSpreadable]: any;
|
|
>[Symbol.isConcatSpreadable] : any
|
|
>Symbol.isConcatSpreadable : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>isConcatSpreadable : unique symbol
|
|
|
|
["property4"]: any = 2;
|
|
>["property4"] : any
|
|
>"property4" : "property4"
|
|
>2 : 2
|
|
|
|
[Symbol.match]: any = null;
|
|
>[Symbol.match] : any
|
|
>Symbol.match : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>match : unique symbol
|
|
>null : null
|
|
|
|
[foo()]: any;
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
>null : null
|
|
|
|
[fieldNameA]: any;
|
|
>[fieldNameA] : any
|
|
>fieldNameA : string
|
|
|
|
@x [fieldNameB]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameB] : any
|
|
>fieldNameB : string
|
|
|
|
@x [fieldNameC]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameC] : any
|
|
>fieldNameC : string
|
|
>null : null
|
|
|
|
["some" + "method"]() {}
|
|
>["some" + "method"] : () => void
|
|
>"some" + "method" : string
|
|
>"some" : "some"
|
|
>"method" : "method"
|
|
|
|
};
|
|
|
|
class E {
|
|
>E : E
|
|
|
|
@x ["property"]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property"] : any
|
|
>"property" : "property"
|
|
|
|
@x [Symbol.toStringTag]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.toStringTag] : any
|
|
>Symbol.toStringTag : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>toStringTag : unique symbol
|
|
|
|
@x ["property2"]: any = 2;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property2"] : any
|
|
>"property2" : "property2"
|
|
>2 : 2
|
|
|
|
@x [Symbol.iterator]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.iterator] : any
|
|
>Symbol.iterator : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>iterator : unique symbol
|
|
>null : null
|
|
|
|
["property3"]: any;
|
|
>["property3"] : any
|
|
>"property3" : "property3"
|
|
|
|
[Symbol.isConcatSpreadable]: any;
|
|
>[Symbol.isConcatSpreadable] : any
|
|
>Symbol.isConcatSpreadable : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>isConcatSpreadable : unique symbol
|
|
|
|
["property4"]: any = 2;
|
|
>["property4"] : any
|
|
>"property4" : "property4"
|
|
>2 : 2
|
|
|
|
[Symbol.match]: any = null;
|
|
>[Symbol.match] : any
|
|
>Symbol.match : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>match : unique symbol
|
|
>null : null
|
|
|
|
[foo()]: any;
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
>null : null
|
|
|
|
["some" + "method"]() {}
|
|
>["some" + "method"] : () => void
|
|
>"some" + "method" : string
|
|
>"some" : "some"
|
|
>"method" : "method"
|
|
|
|
[fieldNameA]: any;
|
|
>[fieldNameA] : any
|
|
>fieldNameA : string
|
|
|
|
@x [fieldNameB]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameB] : any
|
|
>fieldNameB : string
|
|
|
|
@x [fieldNameC]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameC] : any
|
|
>fieldNameC : string
|
|
>null : null
|
|
}
|
|
|
|
void class F {
|
|
>void class F { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; ["some" + "method"]() {} [fieldNameA]: any; @x [fieldNameB]: any; @x [fieldNameC]: any = null;} : undefined
|
|
>class F { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; ["some" + "method"]() {} [fieldNameA]: any; @x [fieldNameB]: any; @x [fieldNameC]: any = null;} : typeof F
|
|
>F : typeof F
|
|
|
|
@x ["property"]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property"] : any
|
|
>"property" : "property"
|
|
|
|
@x [Symbol.toStringTag]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.toStringTag] : any
|
|
>Symbol.toStringTag : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>toStringTag : unique symbol
|
|
|
|
@x ["property2"]: any = 2;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property2"] : any
|
|
>"property2" : "property2"
|
|
>2 : 2
|
|
|
|
@x [Symbol.iterator]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.iterator] : any
|
|
>Symbol.iterator : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>iterator : unique symbol
|
|
>null : null
|
|
|
|
["property3"]: any;
|
|
>["property3"] : any
|
|
>"property3" : "property3"
|
|
|
|
[Symbol.isConcatSpreadable]: any;
|
|
>[Symbol.isConcatSpreadable] : any
|
|
>Symbol.isConcatSpreadable : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>isConcatSpreadable : unique symbol
|
|
|
|
["property4"]: any = 2;
|
|
>["property4"] : any
|
|
>"property4" : "property4"
|
|
>2 : 2
|
|
|
|
[Symbol.match]: any = null;
|
|
>[Symbol.match] : any
|
|
>Symbol.match : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>match : unique symbol
|
|
>null : null
|
|
|
|
[foo()]: any;
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
>null : null
|
|
|
|
["some" + "method"]() {}
|
|
>["some" + "method"] : () => void
|
|
>"some" + "method" : string
|
|
>"some" : "some"
|
|
>"method" : "method"
|
|
|
|
[fieldNameA]: any;
|
|
>[fieldNameA] : any
|
|
>fieldNameA : string
|
|
|
|
@x [fieldNameB]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameB] : any
|
|
>fieldNameB : string
|
|
|
|
@x [fieldNameC]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameC] : any
|
|
>fieldNameC : string
|
|
>null : null
|
|
|
|
};
|
|
|
|
class G {
|
|
>G : G
|
|
|
|
@x ["property"]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property"] : any
|
|
>"property" : "property"
|
|
|
|
@x [Symbol.toStringTag]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.toStringTag] : any
|
|
>Symbol.toStringTag : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>toStringTag : unique symbol
|
|
|
|
@x ["property2"]: any = 2;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property2"] : any
|
|
>"property2" : "property2"
|
|
>2 : 2
|
|
|
|
@x [Symbol.iterator]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.iterator] : any
|
|
>Symbol.iterator : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>iterator : unique symbol
|
|
>null : null
|
|
|
|
["property3"]: any;
|
|
>["property3"] : any
|
|
>"property3" : "property3"
|
|
|
|
[Symbol.isConcatSpreadable]: any;
|
|
>[Symbol.isConcatSpreadable] : any
|
|
>Symbol.isConcatSpreadable : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>isConcatSpreadable : unique symbol
|
|
|
|
["property4"]: any = 2;
|
|
>["property4"] : any
|
|
>"property4" : "property4"
|
|
>2 : 2
|
|
|
|
[Symbol.match]: any = null;
|
|
>[Symbol.match] : any
|
|
>Symbol.match : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>match : unique symbol
|
|
>null : null
|
|
|
|
[foo()]: any;
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
>null : null
|
|
|
|
["some" + "method"]() {}
|
|
>["some" + "method"] : () => void
|
|
>"some" + "method" : string
|
|
>"some" : "some"
|
|
>"method" : "method"
|
|
|
|
[fieldNameA]: any;
|
|
>[fieldNameA] : any
|
|
>fieldNameA : string
|
|
|
|
@x [fieldNameB]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameB] : any
|
|
>fieldNameB : string
|
|
|
|
["some" + "method2"]() {}
|
|
>["some" + "method2"] : () => void
|
|
>"some" + "method2" : string
|
|
>"some" : "some"
|
|
>"method2" : "method2"
|
|
|
|
@x [fieldNameC]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameC] : any
|
|
>fieldNameC : string
|
|
>null : null
|
|
}
|
|
|
|
void class H {
|
|
>void class H { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; ["some" + "method"]() {} [fieldNameA]: any; @x [fieldNameB]: any; ["some" + "method2"]() {} @x [fieldNameC]: any = null;} : undefined
|
|
>class H { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; ["some" + "method"]() {} [fieldNameA]: any; @x [fieldNameB]: any; ["some" + "method2"]() {} @x [fieldNameC]: any = null;} : typeof H
|
|
>H : typeof H
|
|
|
|
@x ["property"]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property"] : any
|
|
>"property" : "property"
|
|
|
|
@x [Symbol.toStringTag]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.toStringTag] : any
|
|
>Symbol.toStringTag : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>toStringTag : unique symbol
|
|
|
|
@x ["property2"]: any = 2;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property2"] : any
|
|
>"property2" : "property2"
|
|
>2 : 2
|
|
|
|
@x [Symbol.iterator]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.iterator] : any
|
|
>Symbol.iterator : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>iterator : unique symbol
|
|
>null : null
|
|
|
|
["property3"]: any;
|
|
>["property3"] : any
|
|
>"property3" : "property3"
|
|
|
|
[Symbol.isConcatSpreadable]: any;
|
|
>[Symbol.isConcatSpreadable] : any
|
|
>Symbol.isConcatSpreadable : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>isConcatSpreadable : unique symbol
|
|
|
|
["property4"]: any = 2;
|
|
>["property4"] : any
|
|
>"property4" : "property4"
|
|
>2 : 2
|
|
|
|
[Symbol.match]: any = null;
|
|
>[Symbol.match] : any
|
|
>Symbol.match : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>match : unique symbol
|
|
>null : null
|
|
|
|
[foo()]: any;
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
>null : null
|
|
|
|
["some" + "method"]() {}
|
|
>["some" + "method"] : () => void
|
|
>"some" + "method" : string
|
|
>"some" : "some"
|
|
>"method" : "method"
|
|
|
|
[fieldNameA]: any;
|
|
>[fieldNameA] : any
|
|
>fieldNameA : string
|
|
|
|
@x [fieldNameB]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameB] : any
|
|
>fieldNameB : string
|
|
|
|
["some" + "method2"]() {}
|
|
>["some" + "method2"] : () => void
|
|
>"some" + "method2" : string
|
|
>"some" : "some"
|
|
>"method2" : "method2"
|
|
|
|
@x [fieldNameC]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameC] : any
|
|
>fieldNameC : string
|
|
>null : null
|
|
|
|
};
|
|
|
|
class I {
|
|
>I : I
|
|
|
|
@x ["property"]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property"] : any
|
|
>"property" : "property"
|
|
|
|
@x [Symbol.toStringTag]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.toStringTag] : any
|
|
>Symbol.toStringTag : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>toStringTag : unique symbol
|
|
|
|
@x ["property2"]: any = 2;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property2"] : any
|
|
>"property2" : "property2"
|
|
>2 : 2
|
|
|
|
@x [Symbol.iterator]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.iterator] : any
|
|
>Symbol.iterator : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>iterator : unique symbol
|
|
>null : null
|
|
|
|
["property3"]: any;
|
|
>["property3"] : any
|
|
>"property3" : "property3"
|
|
|
|
[Symbol.isConcatSpreadable]: any;
|
|
>[Symbol.isConcatSpreadable] : any
|
|
>Symbol.isConcatSpreadable : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>isConcatSpreadable : unique symbol
|
|
|
|
["property4"]: any = 2;
|
|
>["property4"] : any
|
|
>"property4" : "property4"
|
|
>2 : 2
|
|
|
|
[Symbol.match]: any = null;
|
|
>[Symbol.match] : any
|
|
>Symbol.match : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>match : unique symbol
|
|
>null : null
|
|
|
|
[foo()]: any;
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
>null : null
|
|
|
|
@x ["some" + "method"]() {}
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["some" + "method"] : () => void
|
|
>"some" + "method" : string
|
|
>"some" : "some"
|
|
>"method" : "method"
|
|
|
|
[fieldNameA]: any;
|
|
>[fieldNameA] : any
|
|
>fieldNameA : string
|
|
|
|
@x [fieldNameB]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameB] : any
|
|
>fieldNameB : string
|
|
|
|
["some" + "method2"]() {}
|
|
>["some" + "method2"] : () => void
|
|
>"some" + "method2" : string
|
|
>"some" : "some"
|
|
>"method2" : "method2"
|
|
|
|
@x [fieldNameC]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameC] : any
|
|
>fieldNameC : string
|
|
>null : null
|
|
}
|
|
|
|
void class J {
|
|
>void class J { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; @x ["some" + "method"]() {} [fieldNameA]: any; @x [fieldNameB]: any; ["some" + "method2"]() {} @x [fieldNameC]: any = null;} : undefined
|
|
>class J { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; @x ["some" + "method"]() {} [fieldNameA]: any; @x [fieldNameB]: any; ["some" + "method2"]() {} @x [fieldNameC]: any = null;} : typeof J
|
|
>J : typeof J
|
|
|
|
@x ["property"]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property"] : any
|
|
>"property" : "property"
|
|
|
|
@x [Symbol.toStringTag]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.toStringTag] : any
|
|
>Symbol.toStringTag : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>toStringTag : unique symbol
|
|
|
|
@x ["property2"]: any = 2;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["property2"] : any
|
|
>"property2" : "property2"
|
|
>2 : 2
|
|
|
|
@x [Symbol.iterator]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[Symbol.iterator] : any
|
|
>Symbol.iterator : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>iterator : unique symbol
|
|
>null : null
|
|
|
|
["property3"]: any;
|
|
>["property3"] : any
|
|
>"property3" : "property3"
|
|
|
|
[Symbol.isConcatSpreadable]: any;
|
|
>[Symbol.isConcatSpreadable] : any
|
|
>Symbol.isConcatSpreadable : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>isConcatSpreadable : unique symbol
|
|
|
|
["property4"]: any = 2;
|
|
>["property4"] : any
|
|
>"property4" : "property4"
|
|
>2 : 2
|
|
|
|
[Symbol.match]: any = null;
|
|
>[Symbol.match] : any
|
|
>Symbol.match : unique symbol
|
|
>Symbol : SymbolConstructor
|
|
>match : unique symbol
|
|
>null : null
|
|
|
|
[foo()]: any;
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
|
|
@x [foo()]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[foo()] : any
|
|
>foo() : string
|
|
>foo : () => string
|
|
>null : null
|
|
|
|
@x ["some" + "method"]() {}
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>["some" + "method"] : () => void
|
|
>"some" + "method" : string
|
|
>"some" : "some"
|
|
>"method" : "method"
|
|
|
|
[fieldNameA]: any;
|
|
>[fieldNameA] : any
|
|
>fieldNameA : string
|
|
|
|
@x [fieldNameB]: any;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameB] : any
|
|
>fieldNameB : string
|
|
|
|
["some" + "method2"]() {}
|
|
>["some" + "method2"] : () => void
|
|
>"some" + "method2" : string
|
|
>"some" : "some"
|
|
>"method2" : "method2"
|
|
|
|
@x [fieldNameC]: any = null;
|
|
>x : (o: object, k: PropertyKey) => void
|
|
>[fieldNameC] : any
|
|
>fieldNameC : string
|
|
>null : null
|
|
|
|
};
|