- Notifications
You must be signed in to change notification settings - Fork664
Open
Description
Feels like I'm hitting all the edge cases. This can be reproduced using the following test case:
//@Filename: /packages/b/package.json{"name":"package-b","type":"module","exports":{".":"./index.js"}}//@Filename: /packages/b/index.jsexport{};//@Filename: /packages/b/index.d.tsexportinterfaceB{b:"b";}//@Filename: /packages/a/package.json{"name":"package-a","type":"module","imports":{"#re_export":"./src/re_export.ts"},"exports":{".":"./dist/index.js"}}//@Filename: /packages/a/tsconfig.json{"compilerOptions":{"module":"nodenext","outDir":"dist","rootDir":"src","declaration":true,},"include":["src/**/*.ts"]}//@Filename: /packages/a/src/re_export.tsimporttype{B}from"package-b";declarefunctionfoo():Promise<B>exportconstre={ foo};//@Filename: /packages/a/src/index.tsimport{re}from"#re_export";const{ foo}=re;export{foo};//@link: /packages/b -> /packages/a/node_modules/package-b
The relevant part are the type declarations generated forpackage-a
:
//// [re_export.d.ts]importtype{B}from"package-b";declarefunctionfoo():Promise<B>;exportdeclareconstre:{foo:typeoffoo;};export{};//// [index.d.ts]declareconstfoo:()=>Promise<import("../../b/index.js").B>;export{foo};
I would have expected the following declaration:
declare const foo: () => Promise<import("package-b").B>;export { foo };