2012-11-20 25 views
5

Backbone.d.ts kullanarak Backbone uygulamalarını yazan insanlar var. Konuşmak istediğim iki kullanım vakası var. Düz JS kampında 1 olanlar için Ortam bildirim stilleri ve modülleri

kullanan bir AMD yükleyici kullanılarak modüllerin (veya CommonJS ben de herhalde)

  • omurga uygulamaları oluşturma ile omurga uygulamaları oluşturma

    1. , gerekli olduğu omurga modül harici olarak tanımlanacaktır, böylece modül define() sarıcısına alınabilir ve dahil edilebilir.

      Kamp 2'dekiler için, omurga modülünün intellisense'i kullanması için iç modül olarak tanımlanması ve import bildirimi/define() sargısının kullanılması gerekmez.

      Soru: Her iki durumda da kullanılabilmesi için modülü tanımlamanın başka bir yolu var mı?


      Gerçekten var sadece böylece çatal oluşturmak zorunda kalmak istemiyoruz ya hala

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

      veya

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

      ve birlikte almak mümkün senin kodu/Intellisense.

  • cevap

    2

    Bu derleyici modülünün ne tür bilmelidir çünkü sadece bir .d.ts dosyası kullanılarak yapılamaz Ne tür bir kod üretileceğini bilmek için omurga için kullandığınız sistem. Dahili ve harici modülleri tek bir dosyada karıştırabilir ve eşleştirebilirsiniz ve özellikle omurga için kullandığınız doğru tahmin etmenin bir yolu yoktur.

    interface bildirimlerini kullanabilmek için, çoğu öğeyi tam olarak bir yerde bildirmeniz ve "omurga-iç.d.ts" ve "omurga-external.d.ts" adreslerine sahip olmanız gerekir. Ortak bir bildirim dosyasına başvuruda bulunan dosya, ancak bunu yapabildiğiniz boyut, API'nin yüzey alanının tam olarak neye benzediğine bağlı olacaktır.

    TL; DR: Camp 1 ve Camp 2, aynı dosya içinde olsa bile, birbirini dışlamayanlar değildir.

    2

    Bunu, TypeScript ekibi ile geliştirdim ve bir iş öğesi açtıkları.

    Ben tüm modülleri kullanarak yazarsanız o ...

    module MyModule { 
    } 
    

    ... sarmalayıcı, derleyiciye modül bayrağı göndermek eğer dosyayı eşleşirse o modül beyanı şerit gerektiğini önerdi ad. Böylelikle web, CommonJS veya AMD üzerinde modifikasyon olmaksızın derlenebilecek bir modül yazabilirsiniz.

    orijinal tartışma burada olduğunu ve bir iş öğesi haline taşındı:

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

    +0

    Aslında, bu çok farklı bir şey. İsteğiniz, JavaScript oluşturan modüller hakkında.Bu soru, derleyiciye türleri bildirmek için kullanılan 'declare module' hakkındadır. –