如何编写增加另一个模块声明的模块声明

时间:2017-06-28 21:16:37

标签: typescript amd

我正在尝试为用JavaScript编写的一些现有AMD模块编写TypeScript声明。

我想要表示的结构是一个"插件"模型,其中一个模块声明一个接口,另一个模块使用"插件"扩展该接口。我正在尝试使用模块扩充here的示例,但这似乎不允许我创建两个单独的模块。

示例:

  • 模块" foo"定义Foo接口并导出该接口的单例常量
  • 模块" foo-plugin"添加了一个新的"插件"函数到Foo接口

从消费者方面来说,我希望行为如下:

// by importing this, I can use the foo singleton as type Foo with only the Foo
// functionality defined in "foo"
import { foo } from "foo";
// by also importing this, I can now use the additional Foo.plugin function defined by "foo-plugin" on the foo singleton
import "foo-plugin";

// this should compile if and only if the "foo-plugin" module is imported
foo.plugin();

这种行为可能吗?声明会是什么样的?

1 个答案:

答案 0 :(得分:0)

我有the same problem和fastify插件声明。

declare module "foo-plugin" {

    module "foo" {
        function plugin(): void;
    }
}