Mehrere Typen für eine Eigenschaft in einer Schnittstelle

stimmen
2

Ich habe eine Umgebungsdefinitionsdatei für flicht als Übung arbeitet beim Lernen etwas Typoskript auf die Schaffung, aber ich habe dieses Problem mehrfach in der Dokumentation für flicht (in der Achse Optionen) begegnet:

ticks: null or number or ticks array or (fn: axis -> ticks array) 

So konnte ich das in meiner axisOptions Schnittstelle:

interface axisOptions {
    ticks?: any;
}

Welche deckt alle möglichen Optionen, aber gibt es einen besseren Weg, um es auf eine Zahl, einen Array zu beschränken (Zahlen) oder eine Funktion, aber nicht etwas anderes?

Veröffentlicht am 12/10/2012 um 15:02
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
3

Sie können zur Zeit nicht möglich, mehrere Arten angeben - in der Tat ist dies die perfekte Nutzung der dynamischen ist anyArt , denn obwohl es nicht „nichts“ ist es sicherlich dynamisch ist.

Um die Typen auf einem dynamischen Typ zu erzwingen, würden Sie haben, es zu überprüfen - wie in diesem Beispiel:

function example (input?: any) {
    alert(typeof input);
    if (typeof input !== 'undefined' && typeof input !== 'string' && typeof input !== 'number') {
        alert('no');
        return;
    }

    alert('yes');
}

example(true);
example('Okay');
example();
Beantwortet am 12/10/2012 um 15:10
quelle vom benutzer

stimmen
0

Sie können einige erreichen, was Sie sind, nachdem sie durch mehrere Methodendefinitionen mit

interface lodash extends lodashProto, lodashStatic {
  (value: Array): lodashCurried;
  (value: Object): lodashCurried;
  (value: string): lodashCurried;
  VERISON: string;
}
Beantwortet am 15/10/2012 um 14:01
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more