Как переопределить @types из пакета совершенно другого типа?

#typescript

#typescript

Вопрос:

Я пытаюсь переопределить Func тип в Mocha.

Он создан как:

 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.
  

Довольно легко расширить интерфейс, но я считаю невозможным полностью изменить тип в этом случае type interface .

Комментарии:

1. Почему вы хотите переключить его на интерфейс? Не могли бы вы сделать его типом объединения с этими тремя сигнатурами функций?

2. @katamaster818 в этом случае мне нужно, чтобы тип включал перегрузки, я полагаю, что могу сделать это с помощью интерфейса, но эта же ошибка возникает, если вы пытаетесь заменить или объединение на type Func .