命名空间没有导出的成员

时间:2018-03-21 11:59:52

标签: typescript

当我在TypeScript中写这个时,我收到一个错误Namespace Bar has no exported member Qux。为什么这样,我该如何解决?

class Foo {}

namespace Bar
{
    export const Qux = Foo;
}

let a: Bar.Qux;

2 个答案:

答案 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();

这会解决您的问题吗?