2012-10-11 5 views
1

TypeScript와 Dojo를 동시에 배우고 있으며 이로 인해 AMD에 대한 제한적인 이해가 노출되었습니다. 제 3 자 "dgrid/Grid"AMD 모듈, 내 dgrid.d.ts 스텁 선언 및 내 소비 클래스에 import 문을 함께 묶는 방법을 이해하지 못합니다. 낭비 노력 2 일 후 나는 다음과 같은 실행하기 (해키 또는 AMD 모범 사례) 어떤 방법을 찾고 있어요 :TypeScript에서 dgrid에 대한 참조 구문 가져 오기

MyModule.ts

{ 
    ... 
    var myGrid = new dgrid.Grid({ /*col structure*/}, "divId"); 
    ... 
} 

여기 dgrid 내 스텁 선언 파일이. 빨간색

module "dgrid/Grid" 
{ 
    export class Grid 
    { 
     constructor (gridStructure: any, elementId: string); 
    } 
} 

내 소모 타이프 라이터 클래스에 다음 참조를 시도했지만 비주얼 스튜디오는 "dgrid/그리드"를 강조한다 (아래 업데이트 1과 동기화 편집) 문자

dgrid.d.ts 왜냐하면 TS 컴파일러는 default.htm 파일의 기본 Dojo dojoConfig, baseUrl 및 dgrid 패키지 선언을 인식하지 못하기 때문입니다. 나는 공식 타이프 라이터 설명서의 10 장을 읽어 게시 이후

///<reference path='dgrid.d.ts' /> 

import Grid = module("dgrid/Grid"); 

module MyModule 
{ 
    ... 
} 

업데이트 1 . 이전에는 모듈 MyType {} 또는 모듈 "external/thirdparty"{}로 선언 된 모듈의 중요성을 인식하지 못했습니다. 외부 모듈에 대한 앰비언트 선언은 리터럴이어야합니다.

배경 :

의 고전 AMD 필요한 보여주는 SitePen의 dgrid 튜토리얼 페이지에 따라()로드 0

문을 필요 :

require(["dgrid/Grid", "dojo/domReady!"], 
    function(Grid){ 
+0

아직 작업 솔루션이 없습니다. 나는이 질문을 포기하지 않았다. TypeScript import 문은 코드를로드하는 AMD 스타일 모듈 코드를 생성하지만로드 된 모듈을 새로운 (abe) 유형으로 구체화하지는 않는다. 나는 전체 모듈 네임 스페이스가 프로토 타입 아래에 앉아있는 것을 본다. 나는이 문제를 다루기 위해 또 다른 질문을 올릴 것이다. – camelCase

+0

좋습니다. 그 질문에 대한 링크를 여기에 게시 할 수 있습니까? – Valentin

답변

0

내 첫하지만 파일이이 문이 작동하는 것이 생각 위치에 있음을 확인하는 것입니다 :

///<reference path='dgrid.d.ts' /> 

가있는 dgrid.d.ts 파일입니다 모듈 .ts 파일과 같은 폴더?

업데이트 :

당신이 모듈 선언해야합니다

module dgrid { 
    export class Grid { 
     constructor (gridStructure: any, elementId: string) { 

     } 
    } 
} 
+0

예. 내 모든 .ts 및 .d.ts 파일은 같은 디렉토리에 있으며 내 OP 편집에 대한 감사드립니다. 내 OP에서 "업데이트 1"다음에 컴파일러는 var Dgrid = require ("dgrid/Grid")를 생성하지만 require()가 실행될 때 런타임 Dojo 예외가 발생합니다. 또한 컴파일러는 VS2012가 오류로 취급하는 코드 "9009"로 종료됩니다. – camelCase

+0

모듈에 변경 사항을 추가했습니다. – Fenton

+0

@self .csproj에서 tcs 명령을 손으로 편집하는 것이 잘못되어 9009 컴파일러 종료 코드가 발생했습니다. 프로젝트 파일에 표현 된 컴파일러 "amd"옵션은 위치와 공간에 민감합니다. TypeScript \ 0.8.0.0 \ tsc " --module amd @ (TypeScriptCompile – camelCase

1

코드의 다음 (약간 변경) 버전은 나를 위해 잘 컴파일 :

인 MyModule.TS

///<reference path='./dgrid.d.ts' /> 
module MyModule { 
    var gridInstance : dgrid.Grid = new dgrid.Grid("test1", "test2"); 
} 

dgrid.d.ts

module dgrid 
{ 
    class Grid 
    { 
     constructor (gridStructure: any, elementId: string); 
    } 

} 

///<reference path='...'/> 구조는 범위에 내부dgrid 모듈을 가져온다. 형식 이름 앞에 모듈 이름을 붙여 넣으면 작업이 수행됩니다.

관련 문제