* Type side of import types * Value side of import types * Accept library changes * Refined implementation, more tests * Allow resolutions to be performed late if the resolution still results in a file already in the build * Add another test case * Add some jsdoc usages * Allow nodebuilder to use import types where appropriate * Parse & check generic instantiations * use import types in nodebuilder for typeof module symbols * Wire up go to definition for import types * Accept updated type/symbol baselines now that symbols are wired in * PR feedback * Fix changes from merge * Walk back late import handling * Remove unused diagnostic * Remove unrelated changes * Use recursive function over loop * Emit type arguments * undo unrelated change * Test for and support import type nodes in bundled declaration emit
29 lines
711 B
TypeScript
29 lines
711 B
TypeScript
// @target: es6
|
|
// @outDir: ./out
|
|
// @allowJs: true
|
|
// @checkJs: true
|
|
// @filename: externs.d.ts
|
|
declare namespace MyClass {
|
|
export interface Bar {
|
|
doer: (x: string) => void;
|
|
}
|
|
}
|
|
declare class MyClass {
|
|
field: string;
|
|
static Bar: (x: string, y?: number) => void;
|
|
constructor(x: MyClass.Bar);
|
|
}
|
|
declare global {
|
|
const Foo: typeof MyClass;
|
|
}
|
|
export = MyClass;
|
|
// @filename: index.js
|
|
|
|
/**
|
|
* @typedef {import("./externs")} Foo
|
|
*/
|
|
|
|
let a = /** @type {Foo} */(/** @type {*} */(undefined));
|
|
a = new Foo({doer: Foo.Bar});
|
|
const q = /** @type {import("./externs").Bar} */({ doer: q => q });
|
|
const r = /** @type {typeof import("./externs").Bar} */(r => r);
|