2013-03-07 36 views
32

Projemizde, modül yükleyicimiz olarak RequireJS kullanıyoruz. Bizim modüllerin bazıları küresel kütüphaneleri etkileyecektir ve dolayısıyla doğrudan onlar başvurulan modülü içinde kullanılmayacakTypeScript: derleme, ilgisiz ithalatları kaldırır

Örnek:.

beklendiği gibi JavaScript benim modülleri yazarken bu işleri
define(['definitely/goingto/usethis/','just/referencingthis/forpackaging'], function(useThis) { 
    useThis.likeIPromised(); 

    // the following call can only be made when the second required file is available 
    someGlobalAvailableVariable.someMethod(); 
}); 

. Ancak, projemizi adım adım TypeScript'e çeviriyoruz. Yukarıdaki örneği göz önüne alındığında, bu sonuçlanır:

import useThis = module("definitely/goingto/usethis/"); 
import whatever = module("just/referencingthis/forpackaging"); 

useThis.likeIPromised(); 

// I've written a definition file so the following statement will evaluate 
someGlobalAvailableVariable.someMethod(); 

Ve JavaScript bu derleme yaparken, derleyici yardımcı olmak istiyor ve kullanılmayan ithalat kaldırır. Bu şekilde, bu kodumu kırıyor, ikinci içe aktarılan modülün kullanılamamasına neden oluyor. etrafında

Benim mevcut çalışma yedekli atama dahil etmektir, ama bu çirkin görünür:

import whatever = module("just/referencingthis/forpackaging"); 
var a = whatever; // a is never ever used further down this module 

kimse bu derleme sırasında modülleri optimize değil typescript derleyici yapılandırmak mümkün olup olmadığını biliyor mu?

/// <amd-dependency path="just/referencingthis/forpackaging" /> 
+0

İçe aktarımı yalnızca ilgili modüle taşıyamazsınız varsayıyor muyum? – Fenton

+2

Bunlar uygun modülde. Projem ağırlıklı olarak widget'lardan oluşuyor. Her widget kendi modülünde paketlenmiştir. Şablonlama için Gidon'ları kullanıyorum ve sonuç görüntülerini widget'ım dosyalarımla birlikte paketlemek istiyorum. Böyle bir görüşe başvururken, 'Handlebars' küresel değişkeni üzerinde aynı isme sahip bir metot ortaya çıkaracaktır. Bu nedenle, benim için yöntemi tanımlayacağından, modüle başvurmaya gerek duymuyorum. – thomaux

cevap

7

bir güzel çözeltisi (TS 1.8 ile test):

import 'just/referencingthis/forpackaging'; 

amd-bağımlılık triple-

26

Sen (yerine import arasında) dosyanızın üst kısmında yapabilirsiniz Slash-directive sadece ithalat gerektiren başka şeyler varsa işe yarar; yalnızca amd bağımlılık direktiflerine sahip olmak, bir modül tanımı olmadan tamamen JavaScript'i oluşturan TypeScript derleyicisine neden olur.

+0

Vay! Bu özelliği bilmiyordum, teşekkürler! – thomaux

+0

katılıyorum, – JasonS

+0

belgelerine çok yardımcı oldu, teşekkürler. – Tarion