Typescript 如何从完全不同类型的包中重写@类型?

Typescript 如何从完全不同类型的包中重写@类型?,typescript,Typescript,我试图覆盖摩卡中的Func类型 它的作者是: type Func = (this: Context, done: Done) => void; 我想把它改成一个重载函数 import * as M from "mocha"; declare global { namespace Mocha { export interface Func { (this: M.Context): void; (this: M.Context, don

我试图覆盖摩卡中的
Func
类型

它的作者是:

type Func = (this: Context, done: Done) => void;
我想把它改成一个重载函数

import * as M from "mocha";
declare global {
  namespace Mocha {
    export interface Func {
      (this: M.Context): void;
      (this: M.Context, done: M.Done): void;
      (this: M.Context, done?: M.Done): void;
    }
  }
}
我得到这个错误:

Duplicate identifier 'Func'.ts(2300)
index.d.ts(2178, 10): 'Func' was also declared here.

扩展接口非常容易,但我发现不可能完全将类型更改为
类型
接口

为什么要将其切换到接口?你不能用这三个Func签名将其设置为联合类型吗?@katamaster818在这种情况下,我需要该类型包含重载,我相信我可以用接口实现这一点,但如果你尝试替换或将联合设置为
type Func
,也会出现同样的错误。