2016-03-20 4 views
2

ich die Klasse zwingen, zu implementieren muß eine Methode zum Beispiel onCreate(), wie auch in anderen Sprachen zu implementieren wie php wir so etwas wie sehen:In Typoskript, wie geerbte Klasse zu zwingen, eine Methode

<?php 

// Declare the interface 'Movement' 
interface MovementEvents 
{ 
    public function onWalk($distance); 
} 

// Declare the abstract class 'Animal' 
abstract class Animal implements MovementEvents{ 

    protected $energy = 100; 

    public function useEnergy($amount){ 
     $energy -= $amount; 
    } 

} 


class Cat extends Animal{ 

    // If I didn't implement `onWalk()` I will get an error 
    public function onWalk($distance){ 

     $amount = $distance/100; 

     $this->useEnergy($amount) 

    } 

} 

?> 

Beachten Sie, dass in mein Beispiel, wenn ich nicht onWalk() geführt hat wird der Code nicht funktionieren und Sie erhalten eine Fehlermeldung, aber wenn ich das gleiche tun in TypeScript, wie folgend:

// Declare the interface 'Movement' 
interface MovementEvents 
{ 
    onWalk: (distance)=>number; 
} 

// Declare the abstract class 'Animal' 
abstract class Animal implements MovementEvents{ 

    protected energy:number = 100; 

    public useEnergy(amount:number):number{ 

     return this.energy -= amount; 

    } 

} 


class Cat extends Animal{ 

    // If I didnt implment `onWalk()` I will get an error 
    public onWalk(distance:number):number{ 

     var amount:number = distance/100; 

     return this.useEnergy(amount); 

    } 

} 

kein Fehler zeigen, ob ich tat oder Umsetzung nicht das auf Walk-Methode, aber die es wird ein Fehler geben, wenn ich onWalk() in der Animal Klasse nicht implementieren, muss ich das gleiche haben wie php in TypeScript?

Antwort

8

Sie können Ihre Animal Klasse mit dem abstract Schlüsselwort und gleiche gilt für die Methode, die Sie in der untergeordneten Klasse zwingen wollen erklären.

abstract class Animal { 
    abstract speak(): string; 
} 

class Cat extends Animal { 
    speak() { 
     return 'meow!'; 
    } 
} 

Sie können weitere Informationen über abstrakte Klassen und Methoden im TypeScript Handbook finden.

+2

Erstaunlich vielen Dank .. Ich verbrachte Tage auf der Suche nach einer Lösung. –

Verwandte Themen