我需要一点关于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/

10-16 19:38