我需要一点关于TypeScript
的帮助。如何继承扩展方法?
假设我们有一个名为MyClass
的类,只有一个方法Method1()
:
class MyClass {
constructor () { }
public Method1(): void {
}
}
现在我想创建一个子类,添加一个名为
Method2()
的新方法:class MyClassExtension {
public Method2(): void {
}
}
当我有接口时,可以通过声明具有相同名称的新接口来完成此操作:
interface MyInterface {
Method1(): void;
}
interface MyInterface {
Method2(): void;
}
var x: MyInterface;
x.Method1(); // ok
x.Method2(); // ok
但我不知道怎么上课:/有人能帮我吗?
提前谢谢!!!
最佳答案
根据你对约翰尼克回答的反应,你能做如下的事情吗?
如果你现有的JQueR.D.TS看起来像这样:
interface JQuery {
//...OTHER MEMBERS IN JQUERY
addClass(classNames: string): JQuery;
addClass(func: (index: any, currentClass: any) => JQuery);
attr(attributeName: string): string;
attr(attributeName: string, value: any): JQuery;
//...OTHER MEMBERS IN JQUERY
}
interface JQueryStatic {
//...OTHER MEMBERS IN JQUERY
parent(selector?: string): JQuery;
parents(selector?: string): JQuery;
parentsUntil(selector?: string, filter?: string): JQuery;
parentsUntil(element?: Element, filter?: string): JQuery;
//...OTHER MEMBERS IN JQUERY
}
declare var jQuery: JQueryStatic;
declare var $: JQueryStatic;
然后,您只需在代码中的某个地方定义扩展方法,例如:
文件1.ts
///<reference path='jquery.d.ts'/>
interface JQuery {
myNewExtensionMethod() : string;
}
interface JQueryStatic {
myNewExtensionMethod() : string;
}
jQuery.myNewExtensionMethod = () => {
return "11";
}
$.myNewExtensionMethod = () => {
return "11";
}
然后使用它们:
文件2.ts
///<reference path='file1.ts'/>
var result = $.myNewExtensionMethod();
关于typescript - TypeScript和继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13766355/