Microsoft/TypeScript

Conflict between imported namespace and global type in generated declaration file

Open

#48 121 ouverte le 4 mars 2022

Voir sur GitHub
 (0 commentaires) (0 réactions) (0 assignés)TypeScript (6 726 forks)batch import
BugDomain: Declaration EmitHelp Wanted

Métriques du dépôt

Stars
 (48 455 stars)
Métriques de merge PR
 (Merge moyen 6j 17h) (9 PRs mergées en 30 j)

Description

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.

Guide contributeur