TypeScript定义文件。外部插件

时间:2014-09-12 15:54:22

标签: typescript

所以我有一个现有的大型定义文件。让我们说这是一个树项目

declare module Project{

    class Tree{
       x: number;
       y: number;
    }

    module Plugins{

        class Plugin{

        }

    }

}

所以这是在主项目d.ts文件中。都好。我们现在说这只是为了表明它不应该被编辑。

但现在有人已经出现并决定编写插件,但主要定义是只读的,不应编辑。例如,有人制作了一个武器插件。他们需要project-plugin-weapon.d.ts

部分要求是此插件将数据添加到原始库。所以"武器"正在添加到树中,在JS中看起来像这样:

Project.Tree.prototype.weapon = X

所以project-plugin-weapon.d.ts看起来像这样

declare module Project {

    module Plugins {

       class Weapons{

       }

       module Weapons{

           class Gun{

           }

       }

    }

}

但是如何将weapon属性附加到现有的主d.ts文件?

在project.d.ts文件中,Tree类必须是一个类,因为您可以实例化它。我尝试创建一个ITree接口,以便class Tree implements ITree但是当我尝试从project-plugin-weapon.d.ts中添加到该接口时,它会抱怨我的project.d.ts文件没有实现属性武器。

declare module Project {

    interface IGame{

        weapon: Gun; //complaint that Project.d.ts::Game does not implement weapon

    }

    module Plugins {

       class Weapon{

       }

       module Weapon{

           class Gun{

           }

       }

    }

}

那么如何构建一个定义文件来解决这个问题?

请注意,我已经看到JQuery作为示例,但JQuery在其定义中没有类。 Tree()需要构造函数的事实阻止我简单地复制JQuery-Plugin方法。

谢谢!

1 个答案:

答案 0 :(得分:0)

我花了很多时间寻找我想要的东西,但这是不可能的。

  1. http://typescript.codeplex.com/discussions/539939
  2. https://typescript.codeplex.com/discussions/397800
  3. 我在GitHub上创建了一个问题,请求开放式课程。