2016-04-20 6 views
2

ich eine einfache Klasse, die eine Schnittstelle implementiert:Kategorienart Schnittstelle erzwingt nicht Funktionsargument Typen

interface IDevice { 
    electronic: boolean; 
    ergonomic: boolean; 
    powerOn(param1:string): boolean; 
} 

class ComputerMouse implements IDevice { 
    electronic = true; 
    ergonomic = false; 

    powerOn(param1) { 
     return true; 
    } 
} 

var mouse = new ComputerMouse(); 
mouse.powerOn(true); 

ich einen boolean durch powerOn() passieren kann, wenn param1 als String in die Schnittstelle eingegeben wird. Sollte dies nicht zu einem Typfehler führen?

Wenn ich angeben, dass param1 ein boolean ich die Schnittstelle passen zu Recht einen Compiler-Fehler erhalten, da ComputerMouse ‚s Implementierung von powerOn() muss.

class ComputerMouse implements IDevice { 
electronic = true; 
ergonomic = false; 

powerOn(param1:boolean) { 
    return true; 
} 
} 

Ist das beabsichtigt oder fehle ich etwas?

+0

Wenn Sie die Signatur der Funktion in der Klasse zu ändern: 'powerOn (param1: string)' Du bekommst einen Fehler für 'mouse.powerOn (true)', aber ich bin mir nicht sicher, warum es sich nicht ohne es beschweren wird –

+0

Ja ich versuche herauszufinden, warum es nicht ' ohne es zu beschweren. Es scheint, als ob dies nicht –

+0

@NitzanTomer sein sollte es scheint, weil TypeScript kontextbezogene Typisierung für implementierte Eigenschaften nicht unterstützt. Überprüfen Sie die folgenden Links –

Antwort

Verwandte Themen