假设我有一个声明文件,它描述了导出具有多个成员的对象的节点模块的形状。此文件存在于 foo/index.d.ts
中,看起来像:
interface Foo {
bar: () => void;
// ... more members here
}
declare var Foo: Foo;
export = Foo;
有了这个,我可以在编译时正常要求和使用模块:
import * as Foo from 'foo';
Foo.bar();
但是,我现在也希望能够做到这一点:
import * as bar from 'foo/bar';
bar();
我已经尝试了声明文件路径、模块、 namespace 和上下文的所有可能组合,但我无法使它正常工作。最明显、最直观的方法是在 foo/bar/index.d.ts
中创建一个文件:
import * as Foo from '..';
export = Foo.bar;
但这样做会导致错误:'Foo' 仅引用一个类型,但在这里被用作命名空间。
如何创建定义导出外部和内部成员的模块的声明文件?
编辑:尝试按照@cevek 的建议使用declare module
,但这会引发错误“找不到 namespace Foo”:
declare module "foo/bar" {
var bar: Foo.bar;
export = bar;
}
最佳答案
你可以使用模块声明
//foo.d.ts
interface Foo {}
interface Bar {}
declare module 'foo' {
export default Foo
}
declare module 'foo/bar'{
export default Bar
}
从另一个地方使用它
import * as Foo from 'foo';
import * as Bar from 'foo/bar';
关于typescript - 如何导出现有 Typescript 声明模块的内部成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41593298/