TypeScript/tests/cases/conformance/types/import/importTypeInJSDoc.ts
Wesley Wigham 414bc49cc4
Module or import types (#22592)
* 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
2018-04-02 10:18:23 -07:00

30 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);