2017-03-28 6 views

Antwort

1

Nein, nicht, weil Liskov-Prinzip über "Kontravarianz von Methodenargumenten und Rückgabetypen im Subtyp" spricht. Wenn Sie so etwas tun:

foo(bar:Base){ 
    //do stuff 
} 

diese Methode erwartet eine Instanz von Base Klasse, keinen Konstruktor so die Kontra von Methoden auf diesen Fall nicht anwendbar ist.

Es wäre dieses Prinzip brechen, wenn Sie so etwas wie dies tun, weil ein Base Beispiel nicht durch ein Extended ersetzt werden könnte:

class Base{ 

    foo():string{ 
    return ""; 
    } 

    bar(arg:string){} 

} 

class Extended extends Base{ 

    foo():number{ 
    return 1; 
    } 

    bar(arg:boolean){} 

} 

Aber dies ist nicht erlaubt durch die Typoskript Compiler.

Verwandte Themen