Microsoft/TypeScript

Conflict between imported namespace and global type in generated declaration file

Open

#48.121 aberto em 4 de mar. de 2022

Ver no GitHub
 (0 comments) (0 reactions) (0 assignees)TypeScript (6.726 forks)batch import
BugDomain: Declaration EmitHelp Wanted

Métricas do repositório

Stars
 (48.455 stars)
Métricas de merge de PR
 (Mesclagem média 6d 17h) (9 fundiu PRs em 30d)

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.

Guia do colaborador