mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Fix declaration emit for JS default re-exports that resolve to modules through synthesized default exports (#56340)
This commit is contained in:
@@ -9744,6 +9744,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
|
||||
// does not use localName because the symbol name in this case refers to the name in the exports table,
|
||||
// which we must exactly preserve
|
||||
const specifier = (node.parent.parent as ExportDeclaration).moduleSpecifier;
|
||||
if (specifier && (node as ExportSpecifier).propertyName?.escapedText === InternalSymbolName.Default) {
|
||||
verbatimTargetName = InternalSymbolName.Default;
|
||||
}
|
||||
// targetName is only used when the target is local, as otherwise the target is an alias that points at
|
||||
// another file
|
||||
serializeExportSpecifier(
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
//// [tests/cases/compiler/declarationEmitJsReExportDefault.ts] ////
|
||||
|
||||
//// [package.json]
|
||||
{"name": "a", "version": "0.0.0"}
|
||||
//// [index.d.ts]
|
||||
export const a = 123;
|
||||
|
||||
//// [index.mjs]
|
||||
export {default as mod} from 'a';
|
||||
|
||||
|
||||
|
||||
|
||||
//// [index.d.mts]
|
||||
export { default as mod } from "a";
|
||||
@@ -0,0 +1,18 @@
|
||||
// @noTypesAndSymbols: true
|
||||
|
||||
// @filename: /node_modules/a/package.json
|
||||
{"name": "a", "version": "0.0.0"}
|
||||
// @filename: /node_modules/a/index.d.ts
|
||||
export const a = 123;
|
||||
|
||||
// @filename: /tsconfig.json
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "node16",
|
||||
"declaration": true,
|
||||
"emitDeclarationOnly": true,
|
||||
"checkJs": true,
|
||||
}
|
||||
}
|
||||
// @filename: /index.mjs
|
||||
export {default as mod} from 'a';
|
||||
Reference in New Issue
Block a user