Apa motivasi di balik TypeScript?

21

Kami memiliki JavaScript, lalu kami memiliki Flash, lalu kami memiliki Silverlight dan kemudian HTML5 memiliki semuanya.

Jadi apa motivasi di balik TypeScript? Masalah apa yang akan diatasi dan perbaikan apa yang kita dapatkan dengan TypeScript?

http://www.typescriptlang.org/

Gero
sumber
15
Mengapa menurut Anda JavaScript "ownd" HTML5?
Bergi
1
Dalam arti bahwa setiap orang harus menyetujui beberapa hal untuk menemukan kesamaan => teknologi dan pengembangan terhenti.
Gero
3
Mengapa Anda menyebutkan Dart?
Robert Harvey
Dart, TypeScript atau Coffeescript dapat dikompilasi ke JavaScript. Dan Dart juga cukup baru.
Gero
Lihat artikel ini "Pikiran tentang TypeScript" oleh Nicholas C. Zakas: nczonline.net/blog/2012/10/04/thoughts-on-typescript
Czarek Tomczak

Jawaban:

35

Menurut saya itu adalah bahasa yang diketik secara statis, berbasis kelas yang dikompilasi ke JavaScript. Itu ide yang bagus, dan yang lain juga punya.

Keuntungannya harus jelas bagi siapa saja yang dikembangkan dalam bahasa yang diketik secara statis, berbasis kelas dan dalam JavaScript:

  • Pertama dan terpenting, kompiler. Mampu memeriksa masalah kebenaran yang jelas disebabkan oleh kesalahan ketik atau kecerobohan sebelum penyebaran adalah sesuatu yang diterima oleh sebagian besar pengembang sampai mereka harus melakukan pengembangan web, dan kemudian tiba-tiba ditarik keluar dari bawah kaki mereka. Browser dirancang untuk membuat pengalaman menjelajah menjadi menyenangkan dengan mengorbankan fasilitas pengujian dan debugging yang tepat, dan solusi standar, JSLint, bukan pengganti kompiler nyata karena merindukan beberapa masalah ketepatan yang jelas dan mencampur banyak keluhan gaya-pemeriksa di dengan laporannya. Memiliki kompiler nyata adalah langkah besar ke depan.
  • Dan sepanjang garis yang serupa, sistem tipe . Jenis sistem meningkatkan kode Anda dengan membuatnya lebih mudah dibaca (Anda tahu persis apa yang dilewatkan ke dalam suatu fungsi, dan apa yang dapat dilakukannya, hanya dengan melihat daftar parameter, misalnya,) dan dengan menegakkan tingkat kebenaran tertentu pada saat kompilasi waktu. (Jika Anda mengharapkan jenis objek tertentu, melewatkan bilangan bulat adalah kesalahan. JavaScript akan membiarkan Anda melakukan itu dan kemudian meledak ketika Anda mencoba menjalankannya; kompiler dengan sistem tipe akan menangkapnya dan melaporkan kesalahan untuk kamu.)

Jadi seperti yang kita lihat, ide dasarnya adalah ide yang sangat bagus. Karena itu, saya tidak bisa mengatakan apa-apa tentang bahasa itu sendiri karena saya tidak punya pengalaman dengannya. Tetapi saya telah menggunakan Smart (ditautkan ke atas) dan menemukan itu sebagai alat yang sangat kuat dan berguna untuk pengembangan web.

Mason Wheeler
sumber
7
Ini lebih seperti superset dari JavaScript daripada bahasa baru yang mengkompilasinya.
Daniel Little
2
Ya, sangat mengetik memudahkan programmer.
Edwin Yip
13
TypeScript diketik secara statis, tidak diketik dengan kuat.
Fenton
15

Ada beberapa alasan bagus untuk menggunakan TypeScript, sejauh yang saya bisa lihat. Pertama dan terutama, seperti kata Mason Wheeler, kompiler . Atau lebih tepatnya semua pengecekan kompiler tidak. JSLint dan alat-alat lain berguna, tetapi melewatkan beberapa masalah dan kadang-kadang salah. Saya tentu menyambut "inovasi" ini.

Lalu ada sistem tipe nyata , meningkatkan keterbacaan dan menegakkan jenis yang benar. Bagaimanapun, ini meningkatkan kecepatan pengembangan.

Bagi saya, salah satu hal hebat adalah dukungan perkakas . Itu mungkin efek samping dari sistem tipe, tapi tetap hebat. Dan benar-benar perlu, karena dukungan tooling JavaScript saat ini sangat berguna.

TypeScript mencoba memperluas JavaScript . Kompiler menghasilkan JavaScript yang sangat bagus. Dan selain itu, ini mengikuti proposal ECMAScript 6 . (Misalnya sintaks fungsi panah , nilai standar parameter , modul , dan sebagainya.

Itu membuat bekerja dengan modul dan kelas lebih mudah. Sebenarnya mungkin dan sangat umum untuk bekerja dengan kelas dan modul dalam JavaScript, tetapi membutuhkan sejumlah kode boilerplate. Dan itu tidak mudah dibaca. TypeScript memungkinkan untuk menulis pernyataan kelas, antarmuka, dan modul seperti di Java atau C #, yang jauh lebih mudah jika Anda bertanya kepada saya.

Tapi bagaimanapun juga, itu masih JavaScript . Tidak perlu belajar bahasa baru, atau sintaksis. Satu-satunya hal yang ditambahkannya adalah sistem tipe opsional (yang bagus dan terlambat).

Lalu ada "perpustakaan definisi" , yang berarti saya dapat menggunakan semua lib JavaScript saya tanpa menulis ulang, atau bahkan menambalnya. Namun, saya memiliki sistem tipe tambahan sekarang.

Saya pasti akan mencobanya!

Satu hal terakhir, tidak ada persaingan antara HTML5 dan TypeScript. Tapi itu cerita lain.

Bruno Schäpper
sumber
5

Kami memiliki JavaScript, lalu kami memiliki Flash, lalu kami memiliki Silverlight dan kemudian HTML5 memiliki semuanya.

Ini TIDAK benar . Html5 tidak memilikinya, ia memperkenalkan markup baru yang menyederhanakan penggunaan multimedia, dan mengeksplorasi keuntungan dari browser era baru (seperti menggunakan akselerasi perangkat keras saat merender html).

Jadi apa motivasi di balik TypeScript?

Motivasi mungkin didorong oleh alasan untuk menggunakannya. Semua fitur TypeScript seperti: pemeriksaan statis, navigasi berbasis simbol, penyelesaian pernyataan, dan refactoring kode adalah alasan yang sangat kuat untuk mempertimbangkannya.

Selain itu, ia menawarkan kelas, modul, dan antarmuka untuk membantu Anda membangun komponen yang kuat. Fitur-fitur ini tersedia pada waktu pengembangan untuk pengembangan aplikasi berkeyakinan tinggi, tetapi dikompilasi menjadi JavaScript sederhana.

EL Yusubov
sumber
HTML 5 bukan pra-syarat untuk akselerasi perangkat keras. Sebagian besar browser melakukan ini dengan atau tanpa markup HTML5
Neil N
pernyataan saya menunjukkan bahwa akselerasi perangkat keras adalah fitur yang disediakan browser bukan html5.
EL Yusubov
3

Ini mungkin diperlakukan sebagai alat untuk mengelola pengembangan javascript daripada total bahasa baru yang dikompilasi ke JS. Itu tidak ingin menjadi bahasa pengembangan sisi server seperti Dart, dan tidak memiliki sintaks yang berbeda seperti CoffeeScript. Itu tidak ingin mengambil bahasa populer (dan itu perpustakaan inti) dan mengkompilasinya ke JS seperti GWT atau skrip #. TypeScript bahkan mengikuti sintaksis "kelas" yang sama yang diusulkan untuk versi JS berikutnya.

Saya pikir sebagian besar pengembangan web dilakukan hari ini menggunakan javascript nyata, di sisi klien saja. Bahasa atau kerangka kerja seperti Dart, GWT tidak cocok untuk ini. Jika Anda menggunakan coffeescript, sintaks baru muncul. Dan Anda harus memahami coffeescript dan JS. Sementara TypeScript hanya menambahkan beberapa fitur berorientasi tipe tambahan, menyatu ke dalam JS, yang menyimpan pengembang dari kesalahan tipe-spesifik (yang merupakan sebagian besar kesalahan JS) dan memberikan alat pengembangan informasi lebih lanjut tentang maksud pengembang.

Pendekatan ini bukan hal baru. Buka bagian "Mengetik Statis" dari

Artikel ini membahas kueri Anda- http://www.eweek.com/developer/microsoft-delivers-typescript-a-better-javascript-for-big-apps/

Gulshan
sumber
0

Saya pikir ini adalah upaya untuk mengubah omong kosong (javascript) yang dibagi dan tidak dapat diandalkan menjadi bahasa berpemilik yang sebenarnya dapat digunakan untuk proyek-proyek besar.

Seharusnya dibandingkan dengan GWT, yang memiliki serangkaian tujuan serupa tetapi mengambil pendekatan yang lebih bersih dengan membuat javascript bukan bagian dari bahasa; dan dengan applet Java atau Flash, yang mengambil pendekatan yang sangat bersih untuk mendefinisikan lingkungan runtime lengkap yang tidak tergantung pada browser.

Pendapat Anda mungkin berbeda-beda, tetapi saya pikir itu akan terjadi selama itu tergantung pada browser yang secara native memasok implementasi javascript dan model DOM (yang bervariasi, tidak konsisten).

ddyer
sumber
5
Pertama itu bukan milik, itu sudah standar terbuka. Kedua lebih seperti Dart daripada GWT / ScriptSharp (meskipun serupa).
Daniel Little
1
Mungkin tidak ada cara untuk menang dalam hal ini - jika Microsoft tidak mengendalikannya maka itu akan menjadi bahasa yang dibastardisasi dengan banyak varian, dan itu masih tergantung pada pergeseran pasir javascript dan DOM
ddyer
1
Anda terdengar seperti seseorang yang mungkin sedikit pahit atas kemampuan Flash dan / atau Java yang dibuat kurang relevan oleh tumpukan HTML5 / JS populer saat ini.
Graham
3
-1 Jadi Anda tidak suka JavaScript. Itu pernyataan Anda, pada dasarnya.
Bruno Schäpper
2
Adil, dan karena itu adalah dasar untuk naskah, saya kira saya pikir naskah didasarkan pada fondasi yang buruk. Itu tidak selalu fatal, tetapi ini adalah dunia yang terluka.
ddyer