Ist es möglich, eine Schnittstelle in TypeScript mit optionaler Funktion zu erstellen?
interface IElement {
name: string;
options: any;
type: string;
value?: string;
validation(any): boolean; // --> should be optional.
}
javascript
typescript
Anton Selin
quelle
quelle
Antworten:
Derzeit gibt es drei Syntaxen, mit denen TypeScript Funktionsdeklarationen in Schnittstellen zulässt:
Verwenden Sie Ihr Beispiel für eine
validation
Funktion, die 1 Parameter (vomany
Typ) und einenboolean
Rückgabewert verwendet:oder in der neueren Syntax:
oder eine Alternative ist:
Lösung:
Es ist also einfach, es mit der alten Syntax optional zu machen:
mit der zweiten Syntax (kürzlich hinzugefügt - danke an
@toothbrush
)oder in der dritten Syntax (wie Sie gefunden haben):
quelle
any
ist kein Typ, sondern der Name eines Parameters, der implizit vom Typ istany
. Parameter müssen auch auf Schnittstellen benannt werden. Dieser Code kann nicht kompiliert werden, wenn --noImplicitAny aktiviert ist. Es sollte ungefähr so aussehen:validation?:(whatever:any) => boolean;
Wowhatever
ist ein vernünftiger Parametername?if (object.validation)
:) Es muss gegen den Objektkontext gerichtet sein,if (this.validation)
kann also auch abhängig von Ihren Umständen angemessen sein.