Microsoft/TypeScript

Conflict between imported namespace and global type in generated declaration file

Open

#48.121 geöffnet am 4. März 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

namespace import declaration conflict global types date-fns

🕗 Version & Regression Information

  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about declaration files

⏯ Playground Link

Playground link with relevant code

💻 Code

locale.ts:

export type T = {};

types.d.ts:

type Locale = {
  code?: string
}
declare module 'date-fns/locale' {
  const es: Locale
  namespace es {}
}

main.ts:

import { es } from "date-fns/locale";
import * as Locale from "./locale";

export const f = (locale: Locale.T) => es;

Run tsc with "declaration": true.

🙁 Actual behavior

tsc runs with no errors, but the following main.d.ts file is generated:

import * as Locale from "./locale";
export declare const f: (locale: Locale.T) => Locale;

When we try to use this .d.ts file in another TS project we get this error:

Cannot use namespace 'Locale' as a type

🙂 Expected behavior

No conflict. Perhaps the namespace import should be renamed in the .d.ts file.

Contributor Guide