8

我正在尝试为 Handlebars 创建一个定义文件,以与预编译的车把脚本一起使用。Handlebars 会将预编译的脚本放入字符串索引的函数哈希表中,但我无法弄清楚或找到如何定义它。

一个假设的定义是:

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

但这不是一个有效的定义。该定义应该适用于这样的调用:

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

像这样的定义很接近

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

但那是一个带有数字索引的数组,而且不是一回事,VS Intellisense 只是决定数组中的函数是any

4

1 回答 1

12

您要使用的是具有索引签名的对象类型(请参阅规范第 3.5.3 节,特别是 3.5.3.3)。

declare module Handlebars {
    export var templates: {
        [s: string]: (model: any) => string;
    }
}
于 2012-10-11T18:57:20.437 回答