当我在TypeScript中写这个时,我收到一个错误Namespace Bar has no exported member Qux
。为什么这样,我该如何解决?
class Foo {}
namespace Bar
{
export const Qux = Foo;
}
let a: Bar.Qux;
答案 0 :(得分:2)
您正在导出常量,而不是类型。您可以执行此操作let a = new Bar.Foo()
,a
的类型为Foo。
如果要导出类型和常量:
namespace Bar
{
export const Qux = Foo;
export type Qux = Foo;
}
然后你可以:
let a: Bar.Qux = new Bar.Qux();
TypeScript将根据上下文确定您使用的是类型定义还是常量。
答案 1 :(得分:0)
您的实施中的Qux
是变量而不是类型
因此,以下代码有效:
class Foo {}
namespace Bar {
export const Qux = Foo;
}
let a = Bar.Qux;
如果您想将Qux
用作interface
或扩展class
,则可以执行以下操作:
class Foo {}
namespace Bar {
export class Qux extends Foo {}
}
let a = new Bar.Qux();
这会解决您的问题吗?