swc/crates/swc_ecma_parser/tests/tsc/moduleExportAssignment7.ts

70 lines
1.8 KiB
TypeScript

// @noEmit: true
// @allowJs: true
// @checkJs: true
// @Filename: mod.js
class Thing { x = 1 }
class AnotherThing { y = 2 }
function foo() { return 3 }
function bar() { return 4 }
/** @typedef {() => number} buz */
module.exports = {
Thing,
AnotherThing,
foo,
qux: bar,
baz() { return 5 },
literal: "",
}
// @Filename: main.js
/**
* @param {import("./mod").Thing} a
* @param {import("./mod").AnotherThing} b
* @param {import("./mod").foo} c
* @param {import("./mod").qux} d
* @param {import("./mod").baz} e
* @param {import("./mod").buz} f
* @param {import("./mod").literal} g
*/
function jstypes(a, b, c, d, e, f, g) {
return a.x + b.y + c() + d() + e() + f() + g.length
}
/**
* @param {typeof import("./mod").Thing} a
* @param {typeof import("./mod").AnotherThing} b
* @param {typeof import("./mod").foo} c
* @param {typeof import("./mod").qux} d
* @param {typeof import("./mod").baz} e
* @param {typeof import("./mod").buz} f
* @param {typeof import("./mod").literal} g
*/
function jsvalues(a, b, c, d, e, f, g) {
return a.length + b.length + c() + d() + e() + f() + g.length
}
// @Filename: index.ts
function types(
a: import('./mod').Thing,
b: import('./mod').AnotherThing,
c: import('./mod').foo,
d: import('./mod').qux,
e: import('./mod').baz,
f: import('./mod').buz,
g: import('./mod').literal,
) {
return a.x + b.y + c() + d() + e() + f() + g.length
}
function values(
a: typeof import('./mod').Thing,
b: typeof import('./mod').AnotherThing,
c: typeof import('./mod').foo,
d: typeof import('./mod').qux,
e: typeof import('./mod').baz,
f: typeof import('./mod').buz,
g: typeof import('./mod').literal,
) {
return a.length + b.length + c() + d() + e() + f() + g.length
}