Ben kütüphanelerin çok kendi ve 3. parti hem kullanıyorum. Ben typings dizini jQuery ve WinRT için bazı içeriyor bkz ... ama nasıl oluşturulur?
Nasıl varolan JavaScript kitaplığından bir .d.ts "typings" tanım dosyası üretir mi?
Aradığınız doğruluk düzeyini birkaç bunu yazıldığı nasıl söz konusu kütüphaneye göre mevcut seçenekler ve vardır. en kabaca çekicilik azalan sırada seçenekleri inceleyelim.
Belki O zaten mevcut
Her zaman (DefinitelyTyped kontrol https://github.com/DefinitelyTyped/DefinitelyTyped ) ilk. Bu .d.ts dosyaların anlamıyla binlerce dolu bir topluluk repo olduğunu ve kullandığınız şey zaten orada çok olasıdır. Ayrıca kontrol etmelisiniz TypeSearch ( https://microsoft.github.io/TypeSearch/ ) NPM yayınlanan .d.ts dosyalar için bir arama motoru olan; Bu DefinitelyTyped biraz daha tanımlara sahip olacaktır. Birkaç modüller Ayrıca kendi yazmaya çalışıyorum önce durum eğer öyleyse de, katılanların NPM dağıtımının parçası olarak kendi tanımlarını satışa sunuluyor.
Belki Bir ihtiyacınız etmeyin
Typescript şimdi destekler --allowJsbayrağı ve .js dosyalarında daha JS tabanlı çıkarımlar yapılacaktır. Sen ile birlikte derleme .js dosyasını içeren deneyebilirsiniz --allowJsbu size yeterince iyi tip bilgi verir olmadığını görmek için ayar. Typescript bu dosyalarda ES5 tarzı sınıfları ve JSDoc yorumlarla gibi şeyler tanıyacak, ancak kütüphane garip bir şekilde kendini başlatır eğer takıldı alabilirsiniz.
Başlayın --allowJs
Eğer --allowJssize iyi sonuçlar verdi ve daha iyi bir tanım dosyasını kendiniz yazmak istiyorum, sen birleştirebilirsiniz --allowJsile --declarationkütüphanenin türlerine typescript en "en iyi tahmin" görmeyi. Bu size iyi bir başlangıç noktası verir ve elle kaleme dosyanın kadar iyi olabilir JSDoc comments iyi yazılmış ise ve derleyici onları bulmak mümkün oldu.
dts-gen Kullanmaya Başlayın
Eğer --allowJsişe yaramadı, sen dts-gen (kullanmak isteyebilir https://github.com/Microsoft/dts-gen bir başlangıç noktası almak için). Bu araç, doğru tüm özelliklerini numaralandırmak için nesnenin zamanı şeklini kullanır. Artı tarafta, bu çok doğru olma eğilimindedir, ancak aracı henüz ek türleri doldurmak için JSDoc yorumlarınızı kazıma desteklemez. Öyle gibi bu çalıştırın:
npm install -g dts-gen
dts-gen -m <your-module>
Bu üretecektir your-module.d.tsgeçerli klasördeki.
Erteleme düğmesine bas
Eğer sadece tüm geç yapmak ve bir süre türlerine olmadan gitmek isterseniz, typescript 2.0 şimdi yazabilirsiniz
declare module "foo";
hangi izin vereceğim türüyle modülü . Size daha sonra başa küresel istiyorsanız, sadece yazmaimport"foo"any
declare const foo: any;
hangi size verecektir foodeğişkeni.
Sen kullanabilirsiniz ya tsc --declaration fileName.tsRyan açıklanır gibi, ya da belirtebilirsiniz declaration: truealtında compilerOptionssenin içinde tsconfig.jsonzaten bir yaşadım varsayarak tsconfig.jsonprojeniz altında.
(Bir deklarasyon dosyası mevcut değilse bu baş etmenin en iyi yolu, DefinitelyTyped ) sadece tüm kütüphaneye yerine kullanmak şeyler için bildirimleri yazmaktır. Bu esere çok azaltır - ve ek derleyici eksik yöntemleri hakkında şikayetçi tarafından yardım etmeye yoktur.
Ryan söylediği gibi tsc derleyici bir anahtarı vardır --declarationbir üretir .d.tsbir dosyayı .tsdosyası. Ayrıca (engelleme böcek) typescript Eğer tsc derleyici javascript kodu mevcut akabilmesi için Javascript derlemek mümkün olması gerekiyordu unutmayın.
açıklandığı gibi http://channel9.msdn.com/posts/Anders-Hejlsberg-Steve-Lucco-and-Luke-Hoban-Inside-TypeScript 00:33:52 onlar içine WebIDL ve WinRT meta dönüştürmek için bir araç inşa etmişti typescript d.ts
İşte tek typescript tanım dosyası birden içeren bir kütüphane oluşturur bazı PowerShell olan *.jsModern JavaScript dosyaları.
İlk olarak, tüm uzantılarını değiştirmek .ts.
Get-ChildItem | foreach { Rename-Item $_ $_.Name.Replace(".js", ".ts") }
İkincisi, tanım dosyalarını oluşturmak için typescript derleyici kullanın. Orada derleyici hataları bir demet olacak, ama biz bu göz ardı edebilirsiniz.
Get-ChildItem | foreach { tsc $_.Name }
Son olarak, tüm birleştirmek *.d.tsbirine dosyaları index.d.tskaldırarak, importifadeleri ve kaldırma defaulther ihracat ifadeden.
Remove-Item index.d.ts;
Get-ChildItem -Path *.d.ts -Exclude "Index.d.ts" | `
foreach { Get-Content $_ } | `
where { !$_.ToString().StartsWith("import") } | `
foreach { $_.Replace("export default", "export") } | `
foreach { Add-Content index.d.ts $_ }
Bu, tek, kullanışlı biter index.d.tstanımların birçoğu içeren dosyanın.
Ben Senaryo # veya SharpKit destekleyen 3. parti JS kütüphaneleri mevcut bir haritalama için olmazdı. Çapraz derleyiciler .js için bu C # kullanıcıları artık yüz sorunla karşılaştılar olacak ve 3. parti lib tarama ve iskelet C # sınıfa dönüştürmek için bir açık kaynak programı yayınlandı olabilir. böylece C # yerine typescript üretmek için tarayıcı programı kesmek durumunda.
Typescript tanımları içine 3. parti lib için bir C # kamu arayüzü tercüme Bu olmazsa, kaynak JavaScript okuyarak aynı şeyi daha basit olabilir.
Benim özel ilgi Sencha en ExtJS DEA çerçevesi ve ben projeleri Komut # veya SharpKit için bir C # yorumunu üretmek için orada yayınlanmıştır biliyorum
Kendi kütüphane oluştururken, oluşturabilir edebilirsiniz *.d.tskullanarak dosyaları tsc(size oluşturmaya başlayın varsayarsak: gibi pek (typescript derleyicisi) komutunu dist/libklasöründe)
tsc -d --declarationDir dist/lib --declarationMap --emitDeclarationOnly
-d(--declaration): Üretir*.d.tsdosyaları--declarationDir dist/lib: Oluşturulan beyanı dosyaları için çıkış dizin.--declarationMap: Her bir karşılık gelen '.d.ts' dosyası için bir sourcemap oluşturur.--emitDeclarationOnly: Sadece '.d.ts' beyanı dosyaları yayarlar. (Yok derlenmiş JS)
(bkz docs tüm komut satırı derleyici seçenekleri için)
Ya Sepetinde örneğin package.json:
"scripts": {
"build:types": "tsc -d --declarationDir dist/lib --declarationMap --emitDeclarationOnly",
}
: ve daha sonra çalıştırın yarn build:types(ya da npm run build:types)













