Microsoft/TypeScript

Module names in declaration files mismatch with keys in dependencies

Open

#50.917 geöffnet am 23. Sept. 2022

Auf GitHub ansehen
 (0 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)TypeScript (6.726 Forks)batch import
BugDomain: Declaration EmitHelp Wanted

Repository-Metriken

Stars
 (48.455 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)

Beschreibung

Bug Report

🔎 Search Terms

  • declaration files
  • module names
  • dependencies
  • moduleResolution
  • nodenext

🕗 Version & Regression Information

  • Typescript version: v4.8.3

💻 Code

File structure:

├── package1
│   ├── index.d.ts
│   └── package.json
└── package2
    ├── baz.ts
    ├── index.ts
    └── package.json

TS files:

// package1/index.d.ts
export interface FOO {}

// package2/baz.ts
export const BAZ = {
  foo: {} as Partial<import("pkg1").FOO>,
};

// package2/index.ts
import * as baz from "./baz";
export const BAZ = baz.BAZ;

Generated declaration files:

// package2/dist/baz.d.ts
export declare const BAZ: {
  foo: Partial<import("pkg1").FOO>;
};

// package2/dist/index.d.ts
export declare const BAZ: {
  // Why use the name specified in `package1/name`,
  // instead of the key in `package2/dependencies`?
  foo: Partial<import("package1").FOO>;
};

package.json:

// package1/package.json
{
  "name": "package1",
  "version": "1.0.0",
  "main": "index.js",
  "types": "index.d.ts",
  "exports": {
    ".": {
      "default": "./index.js",
      "types": "./index.d.ts"
    }
  }
}

// package2/package.json
{
  "name": "package2",
  "version": "1.0.0",
  "main": "index.js",
  "types": "index.d.ts",
  "devDependencies": {
    "typescript": "^4.8.3"
  },
  "dependencies": {
    "pkg1": "file:../package1"
  }
}

tsconfig.json

{
  "compilerOptions": {
    "declaration": true,
    "moduleResolution": "nodenext",
    "outDir": "dist"
  }
}

🙁 Actual behavior

// package2/dist/index.d.ts
export declare const BAZ: {
  foo: Partial<import("package1").FOO>;
};

🙂 Expected behavior

// package2/dist/index.d.ts
export declare const BAZ: {
  foo: Partial<import("pkg1").FOO>;
};

Contributor Guide