2016-04-13 4 views
2

In einer .d.ts Datei, wie definiere ich ein Objekt mit String-Schlüssel und T Werte?Wie deklariert man ein getipptes Objekt mit beliebigen Schlüsseln?

z.B.

declare var Game: { 
    creeps: Object<string, Creep>; // not sure what syntax to use here 
}; 

declare class Creep { 
    // definition... 
} 

Game.creeps ist ein object, aber ich weiß nicht, welche Eigenschaften/keys es haben (sie sind während der Laufzeit definiert - ich verwende es wie ein Wörterbuch), aber ich weiß dass alle seine Werte Creep s sind.

Meine IDE sagt "Objekt ist nicht generisch", also denke ich, dass die Syntax nicht ganz richtig ist.

Antwort

5

Verwenden Sie einen Index Unterschrift:

declare var Game: { 
    creeps: {[key:string]: Creep} 
}; 
+1

Perfect, danke! Ich wusste nicht, wonach ich suchen sollte. Akzeptiert in ~ 5min – mpen

+0

Dies ist immer noch [Fehler in VSCode] (http://i.imgur.com/Sf3txDO.png). Ist das ein Fehler in VS Code oder gibt es eine andere Möglichkeit zu sagen "eine Eigenschaft ist OK"? – mpen

+0

Sie müssen es als ein Wörterbuch zugreifen, d. H. 'Creeps ['key']' 'anstelle von' creeps.key'. Wenn Sie den Schlüsselnamen kennen, sollten Sie ihn als Standardstütze hinzufügen, anstatt einen Index zu verwenden. – basarat

Verwandte Themen