2017-05-27 1 views
2

Hier überschrieben ist, was ich in Javascript tunWie ein Dekorateur verwenden, um eine statische Methode einer Klasse in Typoskript

class A { 
    static foo (a, b, callback) { 
    setTimeout(() => { 
     let result = doSomethig(a, b) 
     callback(result) 
    }, 1000) 
    } 
} 

function decorator (OriginalClass) { 
    return class extends OriginalClass { 
    static foo (a, b) { 
     return new Promise((res) => { 
     super.foo(a, b, (result) => { 
      res(result) 
     }) 
     }) 
    } 
    } 
} 

@decorator  
class B extends A { 
} 

let result = await B.foo(10, 20) 

Ich möchte eine Methode einer Klasse zu überschreiben, und in dem überschriebenen Methode, ich will um die ursprüngliche Methode aufzurufen. Gibt es eine Möglichkeit, dies in Typoskript zu tun?

Antwort

0

Sie können etwas tun:

class A { 
    static bar() { 
    console.log("barA"); 
    } 
} 

function decorator(OriginalClass: any) { 

    let baseBar = OriginalClass.bar; 
    OriginalClass.bar = function() { 
    baseBar(); 
    console.log("barOverridden"); 
    } 
    return OriginalClass; 
} 

@decorator  
class B extends A { 
} 

B.bar(); 
+0

Danke, aber es kann nicht funktionieren, wenn ich Methodensignatur ändern möchten. Ich habe auch meinen Code in der Frage geändert. – hronro

Verwandte Themen