我正在研究使用香草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 {}
这样的代码库继承无效,因此我考虑保持其模式。但这需要我用构造函数和原型定义对象,但失败了。
有人知道解决方案吗?
答案 0 :(得分:0)
确保您可以在此处添加类型
type BaseObject = { foo: () => void; };
function BaseObject(): { new() => BaseObject } {}
BaseObject.prototype.foo = function () { console.log("foo"); };