所以我有一个现有的大型定义文件。让我们说这是一个树项目
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方法。
谢谢!
答案 0 :(得分:0)
我花了很多时间寻找我想要的东西,但这是不可能的。
我在GitHub上创建了一个问题,请求开放式课程。