用于$ .extend原型继承的TypeScript接口

时间:2018-07-09 10:09:27

标签: javascript jquery typescript interface prototype

我正在研究使用香草JS构建的其他项目。在我现在继续工作时,我想使用TypeScript,但是立即遇到了一个问题:我不能使用“常规”原型继承,因为前所有者Object.freeze设置了基础对象。但是,他本人通过使用$.extend(SubObject.prototype, BaseObject.prototype)(其中$是jQuery)从这些对象继承。

示例:

function BaseObject() {}

BaseObject.prototype.foo = function () { console.log("foo"); };
Object.freeze(BaseObject);

function SubObject() {}

// Now he either uses this pattern:
SubObject.prototype = $.extend({}, BaseObject);

// Or this:
$.extend(SubObject.prototype, BaseObject.prototype);

由于在TypeScript中像class extends BaseObject {}这样的代码库继承无效,因此我考虑保持其模式。但这需要我用构造函数和原型定义对象,但失败了。

有人知道解决方案吗?

1 个答案:

答案 0 :(得分:0)

确保您可以在此处添加类型

type BaseObject = { foo: () => void; };
function BaseObject(): { new() => BaseObject } {}

 BaseObject.prototype.foo = function () { console.log("foo"); };