2014-12-17 7 views
36

Ist es möglich, eine Schnittstelle in TypeScript mit optionaler Funktion zu erstellen?TypeScript Optionale Funktion in der Schnittstelle

interface IElement { 
    name: string; 
    options: any; 
    type: string; 
    value?: string; 
    validation(any): boolean; // --> should be optional. 

} 
+2

ich eine Antwort gefunden, ich glaube, es möglich ist optional Funktion wie folgt umzusetzen: Validierung ?: (any) => boolean; –

Antwort

68

Derzeit gibt es drei Syntaxen, die Typoskript für Funktionsdeklarationen in Schnittstellen erlaubt:

Arbeiten mit dem Beispiel einer validation Funktion unter 1 Parameter (von any Typ) und einen boolean Rückgabewert:

validation: {(flag: any): boolean}; 

oder in der neueren Syntax:

validation(flag: any) : boolean; 

oder eine Alternative:

validation: (flag: any) => boolean; 

Lösung:

so, um es mit der alten Syntax optional zu machen ist einfach:

validation?: {(flag: any): boolean}; 

mit der zweiten Syntax (seit kurzem auch - dank zu @toothbrush)

validation?(flag: any) : boolean; 

oder in der dritten Syntax (wie Sie gefunden):

validation?: (flag: any) => boolean; 
+3

Wie Sie es geschrieben haben, 'any' ist kein Typ, sondern der Name eines Parameters, der implizit den Typ' any' hat. Parameter müssen auch an Schnittstellen benannt werden. Dieser Code kann nicht kompiliert werden, wenn --noImplicitAny aktiviert ist. Es sollte in etwa so aussehen: 'validation? :(was auch immer: any) => boolean;' wo 'was auch immer' ist ein sinnvoller Parametername. – NYCdotNet

+0

@NYCdotNet: Ja, ich hätte das Original * nicht so lesen sollen *. Korrigiert :) –

+1

@TrueBlueAussie Sie können nun ** eine Funktion optional mit der neuen Syntax machen: 'validation? (Flag: any): boolean'. – Toothbrush

Verwandte Themen