2014-12-05 2 views
2

프로젝트를 TypeScript로 포팅하는 중입니다. 이 프로젝트는 Handlebars와 Browserify를 hbsfy과 결합하여 템플릿을 처리합니다.Handlebars 템플릿 및 TypeScript로 Browserify

다음과 같이 조금 보이는 전망 폴더에서 "photos.hbs"라는 템플릿 파일에 필요
var photosTemplate = require('./views/photos.hbs'); 

: 이것은 내가이 같은 자바 스크립트 코드 의미

{{#each this}} 
    <span class="title">{{title}}</span> 
{{/each}} 

gulpfile 거기를 그 템플릿을 사용할 수있는 기능으로 변환하는 빌드 단계의 일부로 실행됩니다. 문제는, 어떻게이 타이프를 위해 일을 할 수있다

var newHtml = photosTemplate([{title: "test title 1"}, {title: "test title 2"}]); 

: 이것은 내 소비하는 파일에 내가 함수 템플릿을 사용하는이 같은 코드를 작성할 수 있다는 것을 의미? 나는 importvar을 전환하고 --module commonjs 컴파일러 플래그를 사용하여 이동했습니다만큼 당신이 생각하는 것

error TS2307: Cannot find external module './views/photos.hbs'.

박람회 :이 시점에서

import photosTemplate = require('./views/photos.hbs'); 

내가 오류가 발생. 그래서 나는이 모양과 함께 앉아하는 photos.hbs.d.ts을 만들어 :

interface photos { 
    (context: any, options?: any): string; 
} 

export = photos; 

이 사진 템플릿 사용 방법을 설명하는 간단한 인터페이스입니다. 그러나, 장소에두고 컴파일러는 오류를 얻을 :

error TS2304: Cannot find name 'photosTemplate'.

여기에 비슷한 질문이있다 : https://stackoverflow.com/a/23957928/761388 나는 문제가 내 photos.hbs.d.ts 파일입니다하지만 난 그게 뭐가 잘못 됐는지 확실하지 않다 생각합니다. 나는 외부 모듈로 할 수있는 정의에서 아주 간단한 것을 놓치고있는 것처럼 느껴진다. 하지만 내 인생 내가 ... 그게 뭔지 이것은 나를 위해 일한

답변

2

...

photos.hbs.d.ts

declare function photos (context: any, options?: any): string; 

export = photos; 

을 사용을 작동하지 않을 수 있습니다 :

import photosTemplate = require('./views/photos.hbs'); 

photosTemplate(""); 

그냥 서명을 정의하지, 실제로 전화 기능을 원하는되는 이유.

당신은 또한 할 수 :

interface Photos { 
    (context: any, options?: any): string; 
} 

declare var photos: Photos; 

export = photos; 
+1

을 그리고 스티브는 내가 기분이 너무 오래 무언가를 찾고 있었어요 때 알아 :-) 당신을 좋아하는 이유입니다 당신은 문제를 해결하고 단지 수 없습니다 떠나서 나중에 다시 와야합니까? 그. 전적으로. 고마워! –

관련 문제