与 TypeScript 中的命名空间同名的类

问题描述 投票:0回答:1

当我执行以下操作时...

namespace Core.Error {
  export class ArgumentError extends Error {}
}

我收到错误:

类型“typeof Error”不是构造函数 type.ts(2507)

这是因为找不到Error。

如果我这样做:

namespace Core.Blah {
  export class ArgumentError extends Error {}
}

然后就可以找到

Error

我怎样才能使我的命名空间以单词 Error 结尾,同时扩展 Error 类中的烘焙?

我尝试过像这样

Error
和其他一些事情一样逃避
\Error
,但似乎没有任何效果。

我想使用命名空间而不是导入。

typescript
1个回答
0
投票

由于

Error
构造函数是一个全局变量,您应该能够在全局对象上访问它,该对象应该作为
globalThis
(或
window
global
,具体取决于您的环境) ):

namespace Core.Error {
    export class ArgumentError extends globalThis.Error {  // okay

    }    
}

或者你可以给它一个你没有阴影过的名字并抓住它:

const MyError = Error;

namespace Core.Error {
    export class ArgumentError extends MyError { 

    }    
}

当然,对您需要访问的内容进行shadow可能不是一个好主意。

Playground 代码链接

© www.soinside.com 2019 - 2024. All rights reserved.