Haruskah saya menggunakan naskah? atau saya bisa menggunakan ES6? [Tutup]

286

Pekerjaan saya sehari-hari adalah pengembang klien menggunakan AngularJS. Kami sedang mengevaluasi jika kami ingin menggunakan TypeScript. Saya melakukan penelitian pada naskah dan hampir setiap paket JavaScript yang saya butuhkan harus memiliki file jenis definisi. Saya menemukan itu sangat tidak nyaman, terutama jika saya ingin mencoba sesuatu yang baru dan mereka tidak memiliki definisi untuk itu. Benar-benar membuat frustrasi. (Bahkan definisi jQuery saat ini memberi saya beberapa masalah jika saya ingin menggunakan naskah 1,5 beta). Saya mulai melihat ES6 dan tampilannya mirip dengan TypeScript. Haruskah saya menggunakan ES6 saja? Juga, saya dengar angular 2 akan memiliki dukungan penuh untuk TypeScript, apakah itu menjadi salah satu alasan saya harus tetap menggunakannya?

cjskywalker
sumber
11
Anda tidak perlu file definisi setiap kali untuk sesuatu yang baru. Jika Anda ingin menggunakan pustaka tanpa tipe Anda dapat menulis declare var MyNewLibraryName: any;kemudian menggunakannya sesuka Anda tanpa kompiler mengeluh.
David Sherret
2
Dengan suara untuk menutup pertanyaan ini, saya akan menyarankan meminta lebih banyak pro / kontra yang terkait dengan setiap pendekatan daripada bertanya mana yang terbaik, dengan cara ini Anda meminta informasi dan bukan untuk pendapat.
Brocco
pembaruan skrip javascript fitur versi baru sebelum semua browser utama, opsi saya adalah menggunakan skrip dan kompilasi ke versi javascript berdasarkan browser target Anda. (tentu saja bahkan mudah untuk mentranspilasi javascript satu versi ke versi lain)
bhv
Jika Anda tidak merasa terganggu untuk dapat menggunakan kode dengan benar, dan Anda ingin Immutable.js sangat sulit untuk diajak bekerja sama, dan Anda suka menulis boilerplate, dan Anda berpikir KERING terlalu dibesar-besarkan dan Anda sebenarnya lebih suka mengulangi diri sendiri, dan Anda nikmati penulisan definisi jenis untuk kode orang lain, dan Anda suka mengelola tipe saat mereka berubah di bawah Anda, dan Anda menikmati beralih di antara dua editor teks yang berbeda karena tidak ada yang berfungsi dengan baik, lalu pilih Scripteks. Tetapi jika Anda waras, pilih ES6 / 7 dan Babel.
gargantuan

Jawaban:

114

Saya telah menggunakan naskah dalam proyek sudut saya saat ini selama sekitar satu setengah tahun dan sementara ada beberapa masalah dengan definisi setiap sekarang dan kemudian proyek DefinitelyTyped melakukan pekerjaan luar biasa untuk mengikuti versi terbaru dari perpustakaan paling populer.

Setelah mengatakan bahwa ada kurva pembelajaran yang pasti ketika transisi dari JavaScript vanilla ke TS dan Anda harus memperhitungkan kemampuan Anda dan tim Anda untuk melakukan transisi itu. Juga jika Anda akan menggunakan sudut 1.x sebagian besar contoh yang akan Anda temukan online akan mengharuskan Anda untuk menerjemahkannya dari JS ke TS dan secara keseluruhan tidak ada banyak sumber daya dalam menggunakan TS dan sudut 1.x bersama-sama sekarang. .

Jika Anda berencana menggunakan sudut 2 ada banyak contoh menggunakan TS dan saya pikir tim akan terus memberikan sebagian besar dokumentasi di TS, tetapi Anda tentu tidak harus menggunakan TS untuk menggunakan sudut 2.

ES6 memang memiliki beberapa fitur yang bagus dan saya pribadi berencana untuk lebih mengenalnya tetapi saya tidak akan menganggapnya bahasa siap produksi pada saat ini. Terutama karena kurangnya dukungan oleh browser saat ini. Tentu saja, Anda dapat menulis kode Anda dalam ES6 dan menggunakan transpiler untuk mendapatkannya ke ES5, yang tampaknya menjadi hal yang populer untuk dilakukan saat ini.

Secara keseluruhan saya pikir jawabannya akan mengarah pada apa yang Anda dan tim Anda pelajari dengan nyaman. Saya pribadi berpikir baik TS dan ES6 akan memiliki dukungan yang baik dan masa depan yang panjang, saya lebih suka TS karena Anda cenderung mendapatkan fitur bahasa lebih cepat dan sekarang dukungan tooling (menurut saya) sedikit lebih baik.

Kent Cooper
sumber
40
ES6 tidak mendapat dukungan browser ?? Apakah Anda seorang politisi MS? Baik naskah dan ES6 membutuhkan transpiler. Berarti Anda tidak menjalankan TS atau ES6 di web, melainkan menggunakan sesuatu seperti Babel. TS ke Angular 2 ditambahkan hanya untuk ikatan politik antara Google dan MS
STEEL
40
@ STEEL. Bukan politisi MS, Anda hanya menanggapi jawaban yang saya tinggalkan setahun yang lalu ketika dukungan ES6 sangat terbatas. Dan Anda bebas untuk berpikir bahwa keputusan TS dan Angular 2 bersifat politis tetapi itu tidak mengubah pendapat saya bahwa itu ditulis untuk bahasa itu dan tim Angular2 mendorong penggunaannya.
Kent Cooper
18
Ini dari 2 tahun yang lalu, tetapi waktu telah menunjukkan bagaimana standar akhirnya berlaku. ES6 sangat didukung secara native oleh sebagian besar browser saat ini. Kelas, fungsi panah, dll. Pada akhirnya, kita akan sampai pada titik di mana browser secara native akan mendukung versi javascript yang cukup layak untuk membuat transparansi tidak perlu. Naskah akan selalu membutuhkan transpiler. Mengapa ini penting? karena itu adalah tugas kami sebagai pengembang web untuk mendorong web ke depan, dan itu dengan mendukung standar
monzonj
3
Nyebelin ES6 tidak mendukung keamanan tipe "waktu kompilasi" yang sebenarnya. Ada banyak hal hebat dalam ES6 tetapi fakta bahwa saya tidak bisa mengatakan "argumen ini adalah string (atau instance dari kelas X), sial" dan dapat memverifikasi itu sebagai bagian dari proses build Anda masih buruk untuk program besar (ujung depan dan ujung belakang sama).
Brad Peabody
Anda dapat menggunakan alat seperti Flow Type untuk menambahkan dukungan tipe ke ES6 jika Anda benar-benar menginginkannya. Sampai ES6 menjadi mana-mana di semua browser, toolchain Anda kemudian akan terdiri dari Flow-> ES6-> Babel yang banyak tipuan, tetapi melakukan pekerjaan dan saya pikir adalah rantai yang sangat populer saat ini.
Prahlad Yeri
660

Pohon keputusan antara ES5, ES6 dan TypeScript

Apakah Anda keberatan memiliki langkah membangun?

  • Ya - Gunakan ES5
  • Tidak - teruskan

Apakah Anda ingin menggunakan tipe?

  • Ya - Gunakan TypeScript
  • Tidak - Gunakan ES6

Keterangan lebih lanjut

ES5 adalah JavaScript yang Anda kenal dan gunakan di browser hari ini. Ini adalah apa itu dan tidak memerlukan langkah membangun untuk mengubahnya menjadi sesuatu yang akan berjalan di browser saat ini.

ES6 (juga disebut ES2015 ) adalah iterasi berikutnya dari JavaScript, tetapi tidak berjalan di browser saat ini. Ada beberapa transponder yang akan mengekspor ES5 untuk berjalan di browser. Ini masih merupakan bahasa yang dinamis (baca: tidak diketik).

TypeScript menyediakan sistem pengetikan opsional sambil menarik fitur dari versi JavaScript masa depan (ES6 dan ES7).

Catatan: banyak transponder di luar sana (yaitu babel, TypeScript) akan memungkinkan Anda untuk menggunakan fitur dari versi JavaScript hari ini dan mengekspor kode yang masih akan berjalan di browser hari ini.

Brocco
sumber
5
Tidak sesederhana itu. Ada banyak faktor lain.
RaoulRubin
16
@RaoulRubin Itu benar, ada banyak faktor lain, tetapi untuk pertanyaan tertutup di sini setidaknya memberikan dasar untuk proses pengambilan keputusan
Brocco
1
PS - ES6 + FlowType = Cinta :)
Red2678
3
@RavinderPayal memiliki pertanyaan menarik, Brocco. Dari perspektif pasar, apa adalah nilai TS vs ES5 atau ES6 dan hal-hal sepanjang garis?
J.Wells
3
Ok, jadi posting ini sudah berumur beberapa tahun /. Mari kita beralih ke hari ini, 28 September 2017. Apakah sebagian besar browser mendukung ES6?
Dewey Banks