2017-06-12 8 views
2

ich zur Zeit sowohl ein Array von Strings und eine Stringliteral Union-Typ die gleichen Zeichenketten enthalten haben:Typoskript Array Stringliteral Typ

const furniture = ['chair', 'table', 'lamp']; 
type Furniture = 'chair' | 'table' | 'lamp'; 

ich sowohl in meiner Anwendung benötigen, aber ich versuche, meinen Code zu halten TROCKEN. Gibt es irgendeinen Weg, um von dem anderen zu schließen?

Ich möchte im Grunde etwas wie type Furniture = [any string in furniture array] sagen, also gibt es keine doppelten Strings.

Antwort

0

Die einzige adjustement ich vorschlagen würde, ist die const garantiert kompatibel mit der Art zu machen, wie folgt aus:

type Furniture = 'chair' | 'table' | 'lamp'; 

const furniture: Furniture[] = ['chair', 'table', 'lamp']; 

Dies wird Ihnen eine Warnung sollten Sie einen Rechtschreibfehler in der Matrix zu machen, oder ein hinzufügen unbekannt Artikel:

// Warning: Type 'unknown' is not assignable to furniture 
const furniture: Furniture[] = ['chair', 'table', 'lamp', 'unknown']; 

der einzige Fall, das Sie nicht mit ist helfen würde, wo das Array nicht einer der Werte enthielt.