Definitionsdatei: mehrere mögliche Typen für die Eigenschaft

8

Ich schreibe einige Definitionen für eine vorhandene JS-Bibliothek (CKEditor). Ist es möglich, genauer zu sein als toolbar: any ?

Dokumentation:

  

Symbolleiste: Array / String

     

Die Definition der Toolbox (Alias-Symbolleiste). Es ist ein Symbolleistenname oder ein   Array von Symbolleisten (Strips), von denen jedes auch ein Array ist, das a enthält   Liste der UI-Elemente.

Bibliothekscode:

%Vor%     
Stijn 12.07.2013, 12:48
quelle

3 Antworten

16

Typescript 1.4 unterstützt nun Union-Typen

Natürlich müssen Sie den Wert innerhalb der Funktion überprüfen und entsprechend reagieren, aber jetzt können Sie die Kompilierzeit überprüfen, ohne den Typ in any ändern zu müssen.

%Vor%

Ссылка

    
Simon_Weaver 11.05.2015, 06:07
quelle
2

Leider unterstützt Typescript keine Union-Typen und wird dies in naher Zukunft kaum tun .

Es gibt zwei Vorschläge im Thread:

  1. Überladen der Funktion
  2. Generika

In dem gegebenen Codeabschnitt kann ich sowieso nicht den any -Typ vermeiden. Wenn jedoch außerhalb des Snippets das Argument toolbar als Argument übergeben wird, kann das Überladen von Funktionen möglicherweise den Typ dieser Argumente ausdrücken.

    
musically_ut 12.07.2013 15:20
quelle
1

Sie könnten modellieren, dass die Symbolleiste ein Array und eine Zeichenfolge ist.

%Vor%

Das besagt, dass sowohl Array- als auch String-Operationen legal sind, was nicht wirklich richtig ist und nicht viel mehr Sicherheit bietet als any . Es gibt keine Möglichkeit zu modellieren, dass es das eine oder das andere sein kann, aber nicht beides.

    
Jeffery Grajkowski 12.07.2013 18:34
quelle

Tags und Links