如何从打字稿中的命名空间导出接口?这仅限于声明文件吗?这是我要执行的操作的示例:
namespace Foo {
export interface Bar {}
export class Baz {}
}
export const { Baz } = Foo; // Works just fine
export const { Bar } = Foo; // Type 'typeof Foo' has no property 'Bar' and no string index signature.
打字稿3.3.1
值得注意的是,官方文档将其作为用例,所以当我看到它不起作用时,我感到非常困惑:https://www.typescriptlang.org/docs/handbook/namespaces.html
更新(感谢Titian):
我的主要目标是导出这种类型,我根据Titian的建议解决了该问题:
namespace Foo {
export interface Bar {}
export class Baz {}
}
export const type Bar = Foo.Bar // now exportable
答案 0 :(得分:1)
您正在尝试在期望值的位置使用该界面。类既是类型又是值(请参见values vs types),这就是它起作用的原因。
如果您在类型注释中使用接口,它将按预期工作:
namespace Foo {
export interface Bar {}
export class Baz {}
}
Foo.Baz // Works just fine
let bar : Foo.Bar // ok