2012-10-11 62 views
8

Estoy tratando de crear un archivo de definición para Handlebars, para usar con scripts de manubrio precompilados. Los manillares colocarán los guiones precompilados en una tabla de funciones de hash indexada por cadenas, pero no puedo encontrar ni encontrar cómo se definiría.TypeScript Definición de una tabla hash de funciones

Una hipotética definición sería:

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

pero eso no es una definición válida. La definición debe trabajar para una llamada como ésta:

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

Una definición de este tipo es cerca:

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

Pero eso es una matriz con un índice numérico, y no es la misma cosa, y VS Intellisense simplemente decide que las funciones en la matriz son cualquiera.

+0

Creo que quisiste escribir: '{(model.any): string; } [] '(use dos puntos en lugar de una flecha' => ') – dcstraw

Respuesta

12

Lo que quiere usar es un tipo de objeto con una firma de índice (consulte la sección de especificación 3.5.3, específicamente 3.5.3.3).

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

Gracias, eso es exactamente – EFVincent

+0

Nota para los demás que aterrizan aquí: La sección es ahora 3.7.4, para la versión de la especificación del lenguaje 1.3 – Chad

Cuestiones relacionadas