2013-04-25 2 views
5

나는이 화면 반전이있는 경우 모듈 :타이프 라이터 AMD 구현

export function say(){ 
    console.log("said"); 
} 

나는 내가 TS 클라이언트에서 아주 쉽게 사용할 수있는 AMD 옵션을 사용하여 컴파일 :

import foo = module("tsmodule") 
foo.say(); 

export var x = 123; 

나는 TS 모듈에 자바 스크립트 상당이 그러나 경우 :

define(["require", "exports"], function(require, exports) { 
    function say() { 
     console.log("said"); 
    } 
    exports.say = say; 
}) 

쉽게 사용 할 수있는 방법은 없습니다. 가능한 가장 간단한 해결책은 http://requirejs.org/docs/errors.html#notloaded입니다.

// of course you can use .d.ts for requirejs but that is beside the point 
declare var require:any; 

// will fail with error module has not been loaded yet for context 
// http://requirejs.org/docs/errors.html#notloaded 
var useme = require("jsmodule") 
useme.say(); 

export var x = 123; 
import foo = module("tsmodule") 
foo.say(); 

오류로 인해 실패했습니다. "jsmodule"은 생성 된 타이프 스크립트에서 정의 호출에 전달되지 않았기 때문에.

두 가지 해결 방법 내가 가진

  • 가져 오기/내보내기를 (언어 기능이 손실)
  • 사용 ([]) (여전히 필요에 따라 뭔가를 내보낼 수 없습니다 필요 ([사용하지 않는 ]) 통화

제한 사항 : https://github.com/basarat/typescript-requirejs. 다른 방법이 있습니까? 그렇지 않으면 당신은 여기에 투표 할 수 있습니다 https://typescript.codeplex.com/workitem/948 :

답변

3

을 당신이 항상 (심하게 문서화) amd-dependency 태그를 사용할 수있는 자바 스크립트 모듈에서로드하려면 :

/// <amd-dependency path="jsmodule" /> 

이 종속성 배열에 jsmodule을 넣어 것입니다 정의 호출의.

그리고 당신이 단순히

module useme { 
    function say(): void; 
} 
+1

분명히 문서화되지 않은 기능을 진술 할있는 선언 파일을 제공하고, 내 TSC 버전 0.9.0 알파 작동하지 않습니다. 버전 0.8로 제거/설치하겠습니다. – basarat

+0

Aww 촬영, 그들은 이것을 0.9에서 제거 했습니까?! 나는 0.8.1.1을 사용하고있다. – thomaux

+2

0.8.3에서 작동합니다. 그러나 0.9.0alpha에 포함되지 않음 – basarat