2012-10-11 4 views
8

미리 컴파일 된 핸들 막대 스크립트와 함께 사용하기 위해 Handlebars에 대한 정의 파일을 만들려고합니다. 핸들 막대는 미리 컴파일 된 스크립트를 함수의 문자열 색인화 된 해시 테이블에 넣을 것이지만이 정의 방법을 파악하거나 찾을 수는 없습니다.TypeScript 함수 해시 테이블 정의

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는 배열의 함수가 인 경우을 결정합니다.

+0

나는 다음과 같이 쓸 것입니다 :'{(model.any) : string; } []'(화살표'=>'대신 콜론을 사용하십시오.) – dcstraw

답변

12

사용하려는 것은 인덱스 서명이있는 객체 유형입니다 (3.5.3 절, 3.5.3 절 참조).

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

고마워요. – EFVincent

+0

여기에있는 다른 사람들에게주는주의 사항 : 언어 스펙 버전 1.3의 섹션은 이제 3.7.4입니다. – Chad