如何从名称空间导出接口?

时间:2019-02-05 21:58:22

标签: typescript

如何从打字稿中的命名空间导出接口?这仅限于声明文件吗?这是我要执行的操作的示例:

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

1 个答案:

答案 0 :(得分:1)

您正在尝试在期望值的位置使用该界面。类既是类型又是值(请参见values vs types),这就是它起作用的原因。

如果您在类型注释中使用接口,它将按预期工作:

namespace Foo {
    export interface Bar {}
    export class Baz {}
}

Foo.Baz // Works just fine
let bar : Foo.Bar // ok