// @noEmit: true // @allowJs: true // @checkJs: true // @noImplicitAny: true // @Filename: a.js function Instance() { this.i = 'simple' } var i = new Instance(); Instance; i; function StaticToo() { this.i = 'more complex' } StaticToo.property = 'yep' var s = new StaticToo(); s; StaticToo; // Both! function A () { this.x = 1 /** @type {1} */ this.second = 1 } /** @param {number} n */ A.prototype.z = function f(n) { return n + this.x } /** @param {number} m */ A.t = function g(m) { return m + 1 } var a = new A() a.z(3) A.t(2) a.second = 1