我目前在项目中定义了以下接口:
现在我想定义一个类,如下所示:
在“thirdlib”中,“extendClass”方法将我正在派生的类的构造函数复制到我的构造函数中,或者我被认为是这样做的。
然后在“thirdlib.js”中的其他地方使用它,例如:
当我调用“doAThing”时,“thirdLib.js”已经注册了新的JS类,并且该类具有“thirdClass”中所有原始功能,但是加入了我的自定义内容。
对于“thirdLib.js”,我只有JavaScript代码(压缩版)和一组TypeScript定义文件(因为没有提供lib),我需要使用正常的TypeScript功能创建“myClass()”,同时仍然扩展和使用原始JS类中的所有内容,并且能够添加我的功能到TS类中,并在这样做时覆盖基本JS类中的功能。
2022年4月更新
对于那些想知道的人,在我上次评论约6个月后,我离开了我为此项目工作的公司,所以我从未看到过它的解决方案。由于我没有代码或访问权限,我很怀疑它会得到解决。对于那些感兴趣的人,“Custom Drawing Handler”是我尝试实现的自定义绘图类,用于一个(当时是商业化,现在是OSS)第三方JS库称为“MXGraph”。
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类,该类是从第三方JS库扩展而来的。我有描述其实现的"d.ts"文件,但该库在其源代码形式中并非TypeScript。
为了使用第三方库中的特定函数,我必须创建一个自定义类,该类派生自他们提供的JS类,但我需要使用"prototype"进行重写,而且我需要使用TypeScript进行此操作。
更新 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”中的其他地方使用它,例如:
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类中的功能。
2022年4月更新
对于那些想知道的人,在我上次评论约6个月后,我离开了我为此项目工作的公司,所以我从未看到过它的解决方案。由于我没有代码或访问权限,我很怀疑它会得到解决。对于那些感兴趣的人,“Custom Drawing Handler”是我尝试实现的自定义绘图类,用于一个(当时是商业化,现在是OSS)第三方JS库称为“MXGraph”。