【发布时间】:2018-03-21 20:17:47
【问题描述】:
当我在 TypeScript 中编写此代码时,我收到一条错误消息 Namespace Bar has no exported member Qux。为什么会这样,我该如何解决?
class Foo {}
namespace Bar
{
export const Qux = Foo;
}
let a: Bar.Qux;
【问题讨论】:
标签: typescript
当我在 TypeScript 中编写此代码时,我收到一条错误消息 Namespace Bar has no exported member Qux。为什么会这样,我该如何解决?
class Foo {}
namespace Bar
{
export const Qux = Foo;
}
let a: Bar.Qux;
【问题讨论】:
标签: typescript
您正在导出一个常量,而不是一个类型。你可以这样做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 将根据上下文确定您使用的是类型定义还是常量。
【讨论】:
您实现中的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();
这能解决您的问题吗?
【讨论】: