1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
=== tests/cases/conformance/salsa/module.js ===
var Outer = {}
>Outer : typeof Outer
>{} : {}
Outer.Inner = function() {}
>Outer.Inner = function() {} : typeof Inner
>Outer.Inner : typeof Inner
>Outer : typeof Outer
>Inner : typeof Inner
>function() {} : typeof Inner
Outer.Inner.prototype = {
>Outer.Inner.prototype = { m() { }, i: 1} : { m(): void; i: number; }
>Outer.Inner.prototype : { m(): void; i: number; }
>Outer.Inner : typeof Inner
>Outer : typeof Outer
>Inner : typeof Inner
>prototype : { m(): void; i: number; }
>{ m() { }, i: 1} : { m(): void; i: number; }
m() { },
>m : () => void
i: 1
>i : number
>1 : 1
}
// incremental assignments still work
Outer.Inner.prototype.j = 2
>Outer.Inner.prototype.j = 2 : 2
>Outer.Inner.prototype.j : any
>Outer.Inner.prototype : { m(): void; i: number; }
>Outer.Inner : typeof Inner
>Outer : typeof Outer
>Inner : typeof Inner
>prototype : { m(): void; i: number; }
>j : any
>2 : 2
/** @type {string} */
Outer.Inner.prototype.k;
>Outer.Inner.prototype.k : any
>Outer.Inner.prototype : { m(): void; i: number; }
>Outer.Inner : typeof Inner
>Outer : typeof Outer
>Inner : typeof Inner
>prototype : { m(): void; i: number; }
>k : any
var inner = new Outer.Inner()
>inner : Inner & { m(): void; i: number; }
>new Outer.Inner() : Inner & { m(): void; i: number; }
>Outer.Inner : typeof Inner
>Outer : typeof Outer
>Inner : typeof Inner
inner.m()
>inner.m() : void
>inner.m : () => void
>inner : Inner & { m(): void; i: number; }
>m : () => void
inner.i
>inner.i : number
>inner : Inner & { m(): void; i: number; }
>i : number
inner.j
>inner.j : number
>inner : Inner & { m(): void; i: number; }
>j : number
inner.k
>inner.k : string
>inner : Inner & { m(): void; i: number; }
>k : string
|