2016-08-02 7 views
0

Ich möchte diese generische implementiert Eigenschaft in TypeScript erzwingen. Mein aktueller Code ist:Force Generics implementiert Eigenschaft in TypeScript (beschränkt auf Generics)

interface IEventHandler<TArgs> 
{ 
    (args: TArgs): void 
} 


interface ISubscribable<THandlerType> 
{ 
    bind(fn: THandlerType): void; 

    unbind(fn: THandlerType): void; 
} 

interface IEvent<TArgs> extends ISubscribable<IEventHandler<TArgs>> 
{ 
} 

So etwas wie interface IEventHandler<TArgs> where TArgs : has_property_sender. Ich weiß, wo nicht für TypeScript existiert, kann ich vielleicht eine Abhilfe mit einer anderen Schnittstelle bekommen?

Ist das in TypeScript möglich?

Edited:
Code if it helps someone else. Ich weiß nicht, ob es optimiert werden kann.

Antwort

1

Sie können constraints (Abschnitt "Generic Constraints") in Maschinenschrift verwenden, z.B .:

interface has_property_sender { 
    sender: Object; 
} 

interface MyArgs extends has_property_sender { 
    property: Object; 
} 

interface IEventHandler<TArgs extends has_property_sender> 
{ 
    (args: TArgs): void 
} 
+0

Dank. Ich schaffe es nach ein paar Stunden zu tun, mit Ihrer Antwort, die erweitert wird, ist der richtige Weg (das ist mein dritter Tag auf TypeScript). Ich habe Ihre Herangehensweise bereits ausprobiert, könnte aber dafür sorgen, dass der Absender vom Typ Generika ist. Wenn Sie die Zeit haben, könnten Sie bitte mit einem Auge auf den unteren Rand meines Codes schauen, wenn es optimiert werden könnte. Es gibt einen Kommentar mit ein paar Fragezeichen. – Makla

+1

@Makla - Ich habe Ihren Code überprüft und keinen Weg gefunden, "Edit" vorerst zu entfernen ... – TSV