TypeScript/tests/cases/conformance/types/import/importTypeGenericTypes.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

46 lines
878 B
TypeScript

// @declaration: true
// @lib: es6
// @filename: foo.ts
interface Point<T> {
x: number;
y: number;
data: T;
}
export = Point;
// @filename: foo2.ts
namespace Bar {
export interface I<T> {
a: string;
b: number;
data: T;
}
}
export namespace Baz {
export interface J<T> {
a: number;
b: string;
data: T;
}
}
class Bar<T> {
item: Bar.I<T>;
constructor(input: Baz.J<T>) {}
}
export { Bar }
// @filename: usage.ts
export const x: import("./foo")<{x: number}> = { x: 0, y: 0, data: {x: 12} };
export let y: import("./foo2").Bar.I<{x: number}> = { a: "", b: 0, data: {x: 12} };
export class Bar2<T> {
item: {a: string, b: number, c: object, data: T};
constructor(input?: any) {}
}
export let shim: typeof import("./foo2") = {
Bar: Bar2
};