【发布时间】:2016-06-20 21:33:39
【问题描述】:
我目前在一个项目中定义了以下接口
interface foo {
fooProperty: number;
fooFunction(): void;
}
interface bar extends foo {
barProperty: string;
barFunction(): void;
}
现在我想定义一个类
class myBar implements bar {
public barProperty: string ="bar";
public barFunction() {
// do dosmething
}
}
但是我也不想实现 foo 的函数和属性,因为它们已经在接口定义的现有 JS 类中定义了。
基本上我想要做的是创建一个 typescript 类,它是从 3rd 方 JS 库扩展而来的.
为了使用 3rd 方库中的特定函数,我必须创建一个自定义类,该类派生自他们在 JS 中提供的类,但随后我使用“原型”覆盖它,但是我需要使用打字稿。
更新 1
阅读本文的人似乎并没有完全理解我在这里想要实现的目标,所以让我再详细说明一下。
在我正在进行的项目中,我们使用了一个第三方 JS 库,我们称之为“thirdLib.js”
在“thirdLib.js”中有一些功能,为了使用它,需要我扩展作为“thirdLib.js”的一部分提供的 JS 样式类,如下所示:
function myClass(){
thirdlib.thirdclass.call(this);
}
thirdLib.utilities.extendclass(myClass, thirdLib.thirdClass);
myClass.prototype.overriddenFunc = function(){
// Do custom function here
}
“thirdlib”中的“extendClass”方法将我派生的类的构造函数复制到我的构造函数中,所以我相信。
稍后在“thirdlib.js”EG 的其他地方使用它:
var myStuff = new thirdLib();
var theClass = new myClass();
myStuff.registerSomething(theClass);
myStuff.doAThing();
在我调用“doAThing”时,thirdLib.js 注册了新的 JS 类,并且该类具有“thirdClass”中存在的所有原始功能,但添加了我的自定义。
我所拥有的“thirdLib.js”只有 JavaScript 代码(缩小版)和一组 Typescript 定义文件(我自己编写的,因为 lib 没有提供),我需要能够使用普通 Typescript 功能创建“myClass()”,同时仍然扩展和使用原始 JS 类中的所有内容,同时能够将我的功能添加到 TS 类并在我这样做时覆盖基 JS 类中的功能.
【问题讨论】:
-
Is this SO answer 与您的问题有关吗?
-
很有趣,我刚刚在 SO 上发布此帖子后发现了 jqfaq 帖子,目前正在尝试其中的想法,看看我是否有任何收获。问题很相似,但并不完全相同,因为 SO 帖子和提议的解决方案似乎都围绕扩展内置类型展开,当尝试将它们应用于 3rd 方 JS 库时,这似乎永远不会起作用。
标签: javascript class oop typescript extends