Daktilo yazmalı mıyım? ya da sadece ES6 kullanabilir miyim? [kapalı]


286

Günlük işim AngularJS kullanan istemci geliştiricisidir. TypeScript ile devam etmek isteyip istemediğimizi değerlendiriyoruz. Daktilo yazımı üzerine biraz araştırma yaptım ve ihtiyacım olan hemen hemen her JavaScript paketinin tanım türü dosyaları olmalı. Özellikle yeni bir şey denemek istiyor ve bunun tanımını bilmiyorlarsa bunun çok uygun olmadığını gördüm. Gerçekten sinir bozucu. (Mevcut jQuery tanımı bile typescript 1.5 beta kullanmak istiyorsanız bana bazı sorunlar veriyor). ES6'ya bakmaya başladım ve TypeScript'e benziyor. Bunun yerine ES6 kullanmalı mıyım? Ayrıca, açısal 2'nin TypeScript için tam desteğe sahip olacağını duydum, bununla kalmamın bir nedeni mi olacak?


11
Yeni bir şey için her zaman bir tanım dosyasına ihtiyacınız yoktur. Eğer türsüz bir kütüphane declare var MyNewLibraryName: any;kullanmak isterseniz, derleyici şikayet etmeden istediğiniz gibi yazabilirsiniz .
David Sherret

2
Bu soruyu kapatmak için oylarla, hangisinin en iyisi olduğunu sormak yerine her bir yaklaşımla ilişkili artıları / eksileri daha fazla sormanızı öneririm, bu şekilde fikir değil bilgi istersiniz.
Brokoco

typcript güncellemeleri tüm yeni tarayıcılardan önce javascript yeni sürüm özelliği, benim seçeneğim dizgi kullanmak ve hedef tarayıcılara dayalı javascript sürümüne derlemek. (elbette javascript'i bir versiyonu diğerine aktarmak kolaydır)
bhv

Kodunuzu doğru bir şekilde tiftik etmekten rahatsız değilseniz ve Immutable.js'nin gerçekten zor çalışmasını istiyorsanız ve kazan plakası yazmayı seviyorsanız ve DRY'nin abartılı olduğunu ve aslında kendinizi tekrar etmeyi tercih ederseniz ve diğer kişilerin kodu için tür tanımları yazmanın keyfini çıkarın ve altınızdaki gibi değiştikçe türleri yönetmeyi seversiniz ve orada hiçbir şey düzgün çalışmadığından iki farklı metin düzenleyicisi arasında geçiş yapmaktan hoşlanırsınız, sonra Daktilo Yazısı'nı seçin. Eğer aklı başındaysanız, ES6 / 7'yi ve Babil'i seçin.
devasa

Yanıtlar:


114

Şu anki açısal projemde bir buçuk yıl boyunca Typescript kullanıyorum ve her seferinde tanımlarla ilgili birkaç sorun olsa da ve DefinitelyTyped projesi en popüler kütüphanelerin en son sürümlerine ayak uydurmada inanılmaz bir iş çıkarıyor.

Vanilya JavaScript'ten TS'ye geçerken kesin bir öğrenme eğrisi olduğunu söyledikten sonra, sizin ve ekibinizin bu geçişi yapabilme yeteneğini dikkate almalısınız. Ayrıca, açısal 1.x kullanacaksanız, çevrimiçi bulacağınız örneklerin çoğu, bunları JS'den TS'ye çevirmenizi gerektirir ve genel olarak TS ve açısal 1.x'i birlikte kullanma konusunda çok fazla kaynak yoktur. .

Açısal 2 kullanmayı planlıyorsanız, TS'yi kullanan birçok örnek vardır ve ekibin TS'deki belgelerin çoğunu sağlamaya devam edeceğini düşünüyorum, ancak kesinlikle açısal 2'yi kullanmak için TS'yi kullanmak zorunda değilsiniz.

ES6'nın bazı güzel özellikleri var ve kişisel olarak daha fazla tanımayı planlıyorum, ancak bu noktada üretime hazır bir dil olarak düşünmem. Temel olarak mevcut tarayıcılar tarafından destek eksikliği nedeniyle. Tabii ki, ES6'da kodunuzu yazabilir ve şu anda yapılacak popüler bir şey gibi görünen ES5'e almak için bir transpiler kullanabilirsiniz.

Genel olarak, sizin ve ekibinizin rahat öğrenmeye ne cevap vereceğini düşünüyorum. Şahsen hem TS hem de ES6'nın iyi bir desteğe ve uzun vadeli olacağına inanıyorum, TS'yi tercih ediyorum, çünkü dil özelliklerini daha hızlı alma eğilimindesiniz ve şu anda takım desteği (bence) biraz daha iyi.


40
ES6'nın tarayıcı desteği yok ?? MS siyasetçisi misiniz? Her iki daktilo ve ES6 bir transpiler gerektirir. Web'de TS veya ES6 çalıştırmamanız, Babil gibi bir şey kullanmanız anlamına gelir. Açısal 2'ye TS, Google ve MS arasındaki siyasi bir kravat için eklendi
STEEL

40
@STEEL ES6 desteğinin çok sınırlı olduğu bir yıldan uzun bir süre önce bıraktığım bir yanıta cevap verdiğiniz bir MS siyasetçisi değil. Ve TS ve Açısal 2 kararının politik olduğunu düşünmekte özgürsünüz, ancak bu, o dil için yazıldığını ve Angular2 ekibinin kullanımını teşvik ettiğini ifade etmiyor.
Kent Cooper

18
Bu 2 yıl öncesindendir, ancak standardın nihayetinde nasıl hakim olduğunu zaman göstermiştir. ES6, günümüzde çoğu tarayıcı tarafından yerel olarak büyük ölçüde desteklenmektedir. Sınıflar, ok işlevleri, vb. Sonunda, tarayıcıların transpilleri gereksiz kılmak için doğal olarak yeterince iyi bir javascript sürümünü destekleyeceği bir noktaya geleceğiz. Daktilo metni daima bir aktarıcı gerektirir. Bu neden önemli? çünkü web geliştiricileri olarak web'i ileriye taşımak bizim görevimizdir ve bu standartları destekleyerek
monzonj

3
ES6, gerçek "derleme zamanı" tipi güvenliği desteklemiyor. ES6'da çok fazla harika şey var, ancak "bu argüman bir dize (veya X sınıfı örneği), dammit" diyemiyorum ve bunu oluşturma sürecinizin bir parçası olarak doğrulayabilmeniz hala kötü büyük programlar (ön uç ve arka uç benzerleri).
Brad Peabody

Gerçekten isterseniz ES6'ya tür desteği eklemek için Akış Türü gibi bir araç kullanabilirsiniz . ES6 tüm tarayıcılarda her zaman yaygın olana kadar, araç zinciriniz daha fazla dolaylı olan Flow-> ES6-> Babel'den oluşacaktır, ancak işi yapıyor ve şu anda çok popüler bir zincir olduğunu düşünüyorum.
Prahlad Yeri

660

ES5, ES6 ve TypeScript arasındaki karar ağacı

İnşa adımı atmayı düşünür müsünüz?

  • Evet - ES5 kullanın
  • Hayır - devam et

Türleri kullanmak istiyor musunuz?

  • Evet - TypeScript Kullan
  • Hayır - ES6 Kullan

Daha fazla detay

ES5 , bugün tarayıcıda bildiğiniz ve kullandığınız JavaScript'tir ve bugünün tarayıcılarında çalışacak bir şeye dönüştürmek için bir oluşturma adımı gerektirmez.

ES6 (diğer adıyla ES2015 ) JavaScript sonraki iterasyon, ama bugünün tarayıcılarda çalışmaz. ES5'i tarayıcılarda çalıştırmak için dışa aktaracak birkaç transpil var. Hala dinamik (okuma: türsüz) bir dildir.

TypeScript , gelecekteki JavaScript sürümlerinden (ES6 ve ES7) özellikler çekerken isteğe bağlı bir yazma sistemi sağlar.

Not: Dışarıdaki birçok transpil (yani babel, TypeScript) bugün JavaScript'in gelecekteki sürümlerinden özellikleri kullanmanıza ve bugünün tarayıcılarında hala çalışacak kodu dışa aktarmanıza izin verecektir.


5
O kadar basit değil. Birçok başka faktör var.
RaoulRubin

16
@RaoulRubin Doğru, başka birçok faktör var, ancak burada kapalı bir soru için en azından karar verme süreci için bir başlangıç ​​alanı sağlıyor
Brocco

1
PS - ES6 + FlowType = Aşk :)
Kırmızı2678

3
@RavinderPayal'ın ilginç bir sorusu var, Brocco. Bir pazar açısından bakıldığında ne olduğu bu satırlar boyunca ES5 veya ES6 ve malzeme vs TS değeri nedir?
J.Wells

3
Tamam, bu yazı birkaç yaşında. Şimdi 28 Eylül 2017'ye hızlıca bakalım. Çoğu tarayıcı ES6'yı destekliyor mu?
Dewey Banks
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.