Я пытаюсь сделать набор текста для пакета trace-error
.
По сути, это позволяет создавать связанные ошибки, как показано ниже:
const downStreamError = new TraceError("Some message", upStreamError)
Вот для чего я и придумал:
declare module "trace-error" {
class TraceError implements Error {
name: string;
message: string;
constructor(message: string, ...errors: Error[]);
}
export default TraceError;
}
Но я получаю эту ошибку:
Type 'TraceError' has no properties in common with type 'Error'.
Я понимаю, что это потому, что constructor
отсутствует в интерфейсе Ошибка.
Я также пытался использовать объявление функции:
declare module "trace-error" {
function TraceError(message: string, ...errors: Error[]): Error;
export default TraceError;
}
Но тогда я получаю сообщение об ошибке ниже в коде клиента (по понятным мне причинам):
[ts] Only a void function can be called with the 'new' keyword.
Так что я застрял в том, как написать набор для варианта использования, описанного в начале моего вопроса. Любое понимание будет очень ценится.
Редактировать: Быстрое исправление
Ниже приведено быстрое исправление, которое я использую сейчас:
declare module "trace-error" {
class TraceError {
constructor(message: string, ...errors: Error[]);
}
export default TraceError;
}
Компилятор больше не жалуется, но любая ссылка на класс Error
удалена.