2016-08-02 20 views
1

Ich versuche, "Sammlungen" (wie wird dieses Paradigma tatsächlich genannt?) In Typoskript und haben sie stark typisiert. In Javascript würde ich so etwas schreiben.Stark typisierte Typoskriptsammlungen

var array = [1,2,3,4]; 
var collection = {}; 

for(var x in array){ 
    collection['item-'+x] = x; 
} 

Ich habe ein Objekt, und ich hinzufügen/entfernen Elemente mit dieser collection[name] Syntax.

Das ist großartig, weil ich nicht über Indexe kümmern muss. Jetzt in Typoskript, wenn ich ein Array mache ich kann es erklären und geben Sie einen Typ.

let array: string[] = []; 

Wie würde dies zu dieser Sammlung Syntax, zum Beispiel habe ich eine Sammlung wie diese.

var days = {}; 

days[moment().day('monday')] = new dayType('Monday'); 
days[moment().day('tuesday')] = new dayType('Tuesday'); 

Dies funktioniert gut, aber wenn ich meine Sammlung zugreifen days[moment().day('monday')].Name Ich weiß nicht, ob das wirklich meine Parameter TagTyp übergibt Klasse ist oder einfach nur ein Objekt mit einer Name Eigenschaft auf sie. Und das Gleiche mit dem Namen der Eigenschaft. Ich kann days['July']: = false; hinzufügen, auch wenn das im Zusammenhang mit meinem Objekt keinen Sinn ergibt.

Ist das nur ein Paradigma, das nicht mit TypeScript passt?

Wie heißt dieses Paradigma?

Gibt es einen besseren Weg, dies zu tun?

+1

Mögliche Duplikat [Typoskript Objekte als Dictionary-Typen wie in C#] (http:

var days : { [key: string]: dayType; } = {}; days[moment().day('monday')] = new dayType('Monday'); 

Sie auch eine Schnittstelle für eine Abkürzung verwenden können//stackoverflow.com/questions/13631557/typescript-objects-as-dictionary-types-as-in-c-sharp) –

Antwort

2

Die Struktur, die Sie hier verwenden, sieht wie ein Wörterbuch aus. Versuchen Sie Folgendes:

interface dayDictionary { 
    [key: string]: dayType; 
} 

var days: dayDictionary = { }; 

siehe: TypeScript Objects as Dictionary types as in C#

+0

Danke! Die Schnittstellen funktionieren einwandfrei, das muss ich ab sofort nutzen. – Devcon

Verwandte Themen