2012-10-11 9 views
8

Ich versuche, eine Definitionsdatei für Lenker zu erstellen, für die Verwendung mit vorkompilierten Lenkerscripts. Lenker werden vorkompilierte Skripte in eine String-indizierte Hash-Tabelle von Funktionen einfügen, aber ich kann nicht herausfinden oder finden, wie dies definiert wäre.TypeScript Definieren einer Hash-Tabelle von Funktionen

wäre eine hypothetische Definition sein:

declare module Handlebars { 
    export var templates: { (model:any) => string; }[index: string]; 
} 

aber das ist keine gültige Definition. Die Definition sollte für einen Aufruf wie folgt funktionieren:

var myHtml = Handlebars.templates["person-template"]({FNmae: "Eric"}); 

Eine Definition wie folgt ist schließen:

export var templates: { (model:any) => string; }[]; 

Aber das ist ein Array mit einem numerischen Index, und es ist nicht dasselbe, und VS Intellisense entscheidet nur, dass die Funktionen im Array beliebig sind.

+0

Ich denke, Sie wollten schreiben: '{(model.any): string; } [] '(verwenden Sie einen Doppelpunkt anstelle eines Pfeils' => ') – dcstraw

Antwort

12

Sie möchten einen Objekttyp mit einer Indexsignatur verwenden (siehe Spezifikationsabschnitt 3.5.3, speziell 3.5.3.3).

declare module Handlebars { 
    export var templates: { 
     [s: string]: (model: any) => string; 
    } 
} 
+0

Danke das ist es genau – EFVincent

+0

Hinweis für andere, die hier landen: Der Abschnitt ist jetzt 3.7.4, für die Sprachspezifikationsversion 1.3 – Chad

Verwandte Themen