我有一个库,其中包含许多合并声明,如:
export class Foo {...}
export namespace Foo {
export class Bar {...}
...
}
export default Foo
合并后的命名空间通常定义内部类、特定于类的错误等。
我想在我自己的图书馆里重新出口其中一些申报单。我目前正在尝试这样做:
import FooExt from './library.js'
export namespace Baz {
export type Foo = FooExt
export const Foo = FooExt
...
}
这成功导出了Foo
命名空间的值,但没有导出其类型;即:
import {Baz} from './mylib.js'
let x: Baz.Foo.Bar // Error: Namespace '".../mylib".Baz' has no exported member 'Foo'.
x = new Baz.Foo.Bar // Ok
if (x instanceof Baz.Foo.Bar) { // Ok
// do something
}
有没有办法导出导入的合并命名空间并保留其类型?
据我所知,这与这个问题和这个问题是不同的。
可以使用export import
语法导出命名空间:
import FooExt from './library.js'
export namespace Baz {
export import Foo = FooExt // <-- exports namespace including types and values
...
// instead of:
//export type Foo = FooExt
//export const Foo = FooExt
}
请参阅TypeScript GitHub项目中的原始答案。