2013-06-21 11 views
5

jest sposób wywołania funkcji z klasy bazowej, takiej jak nadpisanie.Funkcja wywołania funkcji pisania z klasy podstawowej

klasy bazowej

export class BaseClass { 
    constructor() { 
    //do something asynchronous 
    //than call initialized 
    } 
} 

Dziedziczenie klasy

export class InheritanceClass extends BaseClass { 
    initialized() { 
    // get called from base class 
    } 
} 

Odpowiedz

7

Czy to znaczy tak:

class Base { 
    constructor(){ 
     setTimeout(()=>{ 
      this.initialized(); 
     }, 1000); 
    } 

    initialized(){ 
     console.log("Base initialized"); 
    } 
} 

class Derived extends Base { 
    initialized(){ 
     console.log("Derived initialized"); 
    } 
} 

var test:Derived = new Derived(); // console logs "Derived initialized" - as expected. 

Działa dobrze w Playground (Zignoruj ​​nieparzystą czerwoną podkreślenie na setTimeout(), co moim zdaniem jest błędem - kompiluje się i działa poprawnie.)

Potrzebna jest metoda obecna na Base, ale może zastąpić to w Derived (z lub, jak w tym przypadku, bez połączenia z super.initialized()).

+0

Więc jeśli podstawową klasą było "Zwierzę", a pochodną klasą był "Pies", mógłbyś mieć metodę chodzenia, ale co z wężami i ptakami, czy miałbyś metodę ślizgania się i latania na swojej klasie zwierząt? –

+0

Inny przypadek użycia. Nie sugeruję, że nie ma potrzeby używania abstrakcyjnych elementów w TypeScript, tylko że ta odpowiedź precyzyjnie odpowiada na prośbę PO dotyczącą możliwości "zrobienia czegoś asynchronicznego, a następnie zainicjowania połączenia" i "wywołania funkcji z klasy podstawowej" (przypuszczam literówkę :) nadpisanie" – JcFx

2

W tym celu trzeba by być inicjowany jako abstrakcyjne członka klasy abstrakcyjnej. maszynopis obecnie nie obsługuje to jednak cecha została poproszona przez i istnieje pozycja pracy otwarty dla niego:

http://typescript.codeplex.com/workitem/395

+0

Nie jestem pewien, czy to prawda. Zobacz poniżej. – JcFx

+0

Jeśli chcesz, aby zainicjalizowany nie istniał w bazie, to jest to odpowiedź, w przeciwnym razie staje się przesłonięciem. Ściśle mówiąc, istnieją brzydkie sposoby, ale nie należy tego zachęcać. –

+0

Nie należy zachęcać? To tylko zwykłe obejście. PO nie poprosił o abstrakcyjną metodę - po prostu umiejętność jej zastąpienia. – JcFx

Powiązane problemy