// @allowJs: true // @checkJs: true // @noEmit: true // @module: commonjs // @filename: node.d.ts declare function require(id: string): any; declare var module: any, exports: any; // @filename: a-ext.js exports.A = function () { this.x = 1; }; // @filename: a.js const { A } = require("./a-ext"); /** @param {A} p */ function a(p) { p.x; } // @filename: b-ext.js exports.B = class { constructor() { this.x = 1; } }; // @filename: b.js const { B } = require("./b-ext"); /** @param {B} p */ function b(p) { p.x; } // @filename: c-ext.js export function C() { this.x = 1; } // @filename: c.js const { C } = require("./c-ext"); /** @param {C} p */ function c(p) { p.x; } // @filename: d-ext.js export var D = function() { this.x = 1; }; // @filename: d.js const { D } = require("./d-ext"); /** @param {D} p */ function d(p) { p.x; } // @filename: e-ext.js export class E { constructor() { this.x = 1; } } // @filename: e.js const { E } = require("./e-ext"); /** @param {E} p */ function e(p) { p.x; } // @filename: f.js var F = function () { this.x = 1; }; /** @param {F} p */ function f(p) { p.x; } // @filename: g.js function G() { this.x = 1; } /** @param {G} p */ function g(p) { p.x; } // @filename: h.js class H { constructor() { this.x = 1; } } /** @param {H} p */ function h(p) { p.x; }