2012-11-20 2 views
5

Backbone.d.ts를 사용하여 백본 응용 프로그램을 작성하는 사람들이 있습니다. 논의하고 싶은 두 가지 유스 케이스가 있습니다. 일반 JS 캠프 1에있는 사람들을 위해 앰비언트 선언 스타일 및 모듈

를 사용하여 AMD 로더를 사용하여 모듈 (또는 CommonJS 나뿐만 아니라 가정)

  • 백본 응용 프로그램을 만드는 백본 애플리케이션을 만들기

    1. 는 것이 필요하다 백본 모듈을 외부로 정의하여 모듈을 가져 와서 define() 랩퍼에 포함시킬 수 있습니다.

      캠프 2의 경우 인텔리 센스를 사용하고 import 문/define() 래퍼를 사용할 필요가 없으므로 백본 모듈을 내부 모듈로 정의해야합니다.

      질문 : 두 경우 모두 사용할 수 있도록 모듈을 정의하는 다른 방법이 있습니까?


      은 정말 당신이 가질 수있는 단지 있도록 포크를 만들 필요하지 않으 중 하나 여전히

      // required for those using import (1) 
      declare module "Backbone" { 
      

      또는

      // required for those not using import (2) and backbone already exists in the global scope 
      declare module Backbone { 
      

      와 함께 얻을 수있을 당신의 코드/인텔리 센스.

  • 답변

    2

    이 컴파일러는 모듈의 종류를 알 필요가 있기 때문에 하나의 .d.ts 파일을 사용하여 수행 할 수 없습니다 시스템에서 생성 할 코드의 종류를 알기 위해 백본에 사용합니다. 단일 파일 내에서 내부 모듈과 외부 모듈을 혼합하고 일치시킬 수 있으며 특히 백본에 사용했던 것을 정확하게 추측 할 방법이 없습니다.

    interface 선언을 사용하여 대다수의 항목을 정확히 한 곳에서 선언하고 "백본 - 내부 .dts"및 "백본 - 외부 .dts"선언을 만들 수 있습니다. 파일에 공통된 선언 파일을 참조하지만 API의 표면 영역이 무엇인지 정확히 무엇을 할 수 있는지에 달려 있습니다.

    TL : DR : Camp 1과 Camp 2는 동일한 파일 내에서도 상호 배타적이지 않습니다.

    2

    저는 이것을 TypeScript 팀에서 제기했으며 작업 항목을 열었습니다.

    나는 당신의 모든 모듈을 사용하여 작성하는 경우 그 ...

    module MyModule { 
    } 
    

    ... 래퍼를, 컴파일러에 모듈 플래그를 보낼 경우 파일을 일치하는 경우는 모듈 선언을 제거한다 제안 이름. 그렇게하면 수정할 필요없이 웹, CommonJS 또는 AMD에서 작동하도록 컴파일 할 수있는 모듈 하나를 작성할 수 있습니다.

    원래의 논의는 여기에, 그것은 작업 항목으로 이동되었습니다

    http://typescript.codeplex.com/discussions/401397

    +0

    실제로 이것은 매우 다른 것입니다. 귀하의 요청은 JavaScript를 생성하는 모듈에 관한 것입니다.이 질문은 형식을 컴파일러에 선언하는 데 사용되는 'declare module'에 대한 것입니다. –