TypeScript Version: Version 3.1.0-dev.20180914
Code
Let's have 3 TypeScript files:
bbb.ts:
export interface INode<T> {
data: T;
}
export function create<T>(): () => INode<T> {
return (undefined as any) as () => INode<T>;
}
lib.ts:
export type G<T extends string> = { [P in T]: string };
export enum E {
A = "a"
}
export type T = G<E>;
index.ts:
import { T } from "./lib";
import { create } from "./bbb";
export const fun = create<T>();
Expected behavior:
when compiled with tsc index -d it generates valid index.d.ts:
export declare const fun: () => import("./bbb").INode<import("./lib").G<import("./lib").E>>;
or another valid would be:
export declare const fun: () => import("./bbb").INode<import("./lib").T>;
Actual behavior:
when compiled with tsc index -d it generates invalid index.d.ts:
export declare const fun: () => import("./bbb").INode<import("./lib").G<E>>;
TypeScript Version: Version 3.1.0-dev.20180914
Code
Let's have 3 TypeScript files:
bbb.ts:
lib.ts:
index.ts:
Expected behavior:
when compiled with
tsc index -dit generates valid index.d.ts:or another valid would be:
Actual behavior:
when compiled with
tsc index -dit generates invalid index.d.ts: