Microsoft/TypeScript

Conflict between imported namespace and global type in generated declaration file

开放

#48,121 创建于 2022年3月4日

 (0 条评论) (0 个反应) (0 位负责人)TypeScript (13,395 个派生)batch import
BugDomain: Declaration EmitHelp Wanted

仓库指标

星标
 (108,860 个星标)
PR 合并指标
 (PR 指标待抓取)

描述

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.

贡献者指南