2012-10-11 6 views
8

Sto provando a creare un file di definizione per Handlebars, da utilizzare con script manubrio pre-compilati. Handlebars inserisce script precompilati in una tabella hash indicizzata di stringhe, ma non riesco a capire o scoprire come questo verrà definito.TypeScript Definizione di una tabella hash delle funzioni

Una definizione ipotetica potrebbe essere:

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

ma non è una definizione valida. La definizione dovrebbe funzionare per una chiamata in questo modo:

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

Una definizione di questo tipo è vicino:

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

Ma questo è un array con un indice numerico, e non è la stessa cosa, e VS Intellisense decide che le funzioni dell'array sono qualsiasi.

+0

Penso che intendevi scrivere: '{(model.any): string; } [] '(usa i due punti invece di una freccia' => ') – dcstraw

risposta

12

Quello che si desidera utilizzare è un tipo di oggetto con una firma di indice (vedere la sezione specifica 3.5.3, in particolare 3.5.3.3).

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

Grazie è esattamente – EFVincent

+0

Nota per gli altri che atterrano qui: La sezione è ora 3.7.4, per la specifica della lingua versione 1.3 – Chad