Apa arti proposal sintaksis tipe ES Microsoft untuk JavaScript?

JavaScript akan segera memiliki sintaks sendiri jika proposal yang dibuat awal tahun ini oleh Microsoft dan pengembang lain menjadi bagian dari standar ECMAScript. Inisiatif ini berencana untuk menambahkan “ketik sebagai komentar” untuk mendukung JavaScript, memungkinkan pengembang untuk membubuhi keterangan kode dengan informasi jenis yang digunakan oleh komponen lain dalam ekosistem.

sintaksis

Rumus yang disarankan terlihat seperti ini:

function sayAge(name: string, age: number) {
    console.log(`${name} is ${age} years old.`);
}
 
sayAge("JavaScript", 26);

Ini akan akrab bagi siapa saja yang pernah menggunakan TypeScript, satu set lengkap JavaScript yang ditulis dari Microsoft. TypeScript diterima secara luas di industri; Proposal baru ini bertujuan untuk membawa beberapa manfaatnya ke dunia JavaScript yang lebih luas.

Apa yang bukan sugesti?

Jika saran ini disetujui, Anda dapat menggunakan saran ini untuk menulis JavaScript yang sepenuhnya valid dengan anotasi seperti yang ditunjukkan di atas. Itu diterima di runtime JavaScript seperti browser web, Node.js, dan Deno yang mengikuti standar ES.

Namun, proposal tersebut tidak benar-benar memperluas bahasa JavaScript. Anotasi Anda hanya sebagai berikut: metadata pasif yang tidak memengaruhi kompiler JavaScript atau eksekusi kode Anda. Panggilan fungsi seperti ini berfungsi saat runtime:

function sayAge(name: string, age: number) {
    console.log(`${name} is ${age} years old.`);
}
 
// "age" is a string when it should be a number, but this is still allowed
sayAge("JavaScript", "twenty");

Idenya adalah untuk menyarankan sintaks baru yang secara resmi didukung tetapi sepenuhnya diabaikan oleh mesin. Satu-satunya perubahan pada implementasi adalah mendeteksi jenis anotasi dan menghapusnya di mana pun mereka digunakan.

Proposal ini bertujuan untuk menambahkan dukungan untuk mengomentari tipe parameter, variabel, dan properti kelas. Dia juga akan mempertimbangkan untuk menambahkan interface Kata kunci, faktor penekanan seperti ! Dan asdan ? Pengubah untuk menandai jenis sebagai opsional. Intinya adalah bahwa semua ini mencerminkan TypeScript; Namun, seperti halnya saran dari langkah 0, hasil akhirnya mungkin berbeda.

apa intinya?

Jika menulis anotasi tidak mengubah perangkat lunak Anda, pertanyaan yang jelas adalah apakah itu layak atau tidak. Sarannya mengatakan ya karena sintaksnya dapat mengurangi waktu iterasi dan mengurangi beban utas alat JavaScript modern.

Menulis kode yang aman untuk tipe saat ini memerlukan TypeScript, yang merupakan ragam bahasa lain yang menambahkan dependensi ke proyek Anda dan memerlukan langkah kompilasi manual. Kode ini kemudian dapat dijalankan melalui alat lain seperti compiler dan transpiler sebelum JavaScript final dibuat untuk distribusi. Ini melengkapi rantai alat yang kompleks dengan beberapa bagian yang bergerak.

Meskipun JavaScript adalah bahasa yang diketik dengan buruk, manfaat pengetikan yang kuat sekarang diakui secara luas oleh komunitas. Ini dengan baik menggambarkan dinamika seputar proyek TypeScript. Pengetikan statis juga menjadi yang terdepan ketika ditanya tentang fitur yang hilang dalam survei State of JS 2021.

Menambahkan sintaks tipe ke JavaScript memberi Anda beberapa keuntungan dari TypeScript tanpa harus mengkompilasi kode Anda. Ini menyederhanakan penyiapan dan pemeliharaan proyek saat JavaScript berkembang agar lebih selaras dengan praktik pengembangan modern.

Dalam beberapa tahun terakhir, semakin banyak kode yang bermigrasi ke pendekatan “JavaScript murni”. Matinya browser lama membuat terjemahan kurang diperlukan daripada sebelumnya – sebagian besar aplikasi modern sepenuhnya mendukung fitur seperti kelas, fungsi stok, variabel yang dibatasi blok, dan async/await. JavaScript bahkan memiliki sistem unit ekstensif yang bekerja di semua mesin, termasuk browser.

Hanya beberapa tahun yang lalu ada garis panjang alat itu perlu Untuk menulis fungsi-fungsi ini dengan aman ke dalam kode Anda, mereka akan bekerja pada mesin pengguna. Saat ini, pengembang dapat dengan aman meninggalkan build ini dan kembali ke model referensi file JavaScript asli. <script> Kata kunci.

Jenis adalah salah satu dari sedikit area yang tersisa di ekosistem JavaScript yang tidak diperhitungkan oleh bahasa itu sendiri. Suka atau benci mereka, tidak dapat disangkal bahwa tipe telah menjadi pokok dalam pengembangan JavaScript untuk banyak tim dan proyek. Proposal gramatikal secara resmi mengakui fakta ini. Ini mencoba membawa tingkat dukungan jenis tertentu ke dalam JavaScript tanpa merusak kode yang ada atau menerapkan pemeriksaan jenis runtime yang menurunkan kinerja.

Apa yang harus dilakukan anak laki-laki?

Peran “genre” bervariasi antar bahasa. Common denominator adalah kemampuan suatu tipe untuk mengekspresikan tipe data apa yang akan dikandung oleh variabel tertentu. Makna tambahan, keterampilan, dan perilaku kemudian berlapis.

Dalam bahasa kompilasi yang diketik secara statis seperti C# dan Java, tipe diimplementasikan pada waktu kompilasi. Tidak mungkin untuk mengkompilasi sebuah program jika Anda memiliki semacam ketidakcocokan dalam kode Anda. Dalam bahasa yang ditafsirkan dengan pengetikan opsional yang kuat, di mana PHP adalah contohnya, jenis diimplementasikan saat runtime – program menghasilkan kesalahan jika jenis nilai tidak kompatibel dengan konteks di mana ia digunakan.

Diskusi aktif dalam komunitas JavaScript telah berfokus pada ruang lingkup sistem penulisan yang disematkan. Proposal ini membatasi perannya pada yang utama, yang merupakan dokumentasi sederhana dari jenis nilai yang diharapkan. Ini cocok dengan posisi TypeScript sebagai sintaks tipe yang dapat dihapus yang diabaikan saat runtime.

Tujuan dari contoh ini adalah untuk memberikan umpan balik langsung kepada pengembang tentang potensi kesalahan saat menulis kode. Anda bisa mendapatkan informasi tentang masalah penulisan saat menulis JavaScript Standar dalam IDE yang kompatibel. Jika Anda mau, Anda juga dapat menggunakan alat pendukung seperti TypeScript, parser statis, atau assembler untuk memeriksa sumber Anda jika perlu. Ini dapat mencegah penerapan di saluran CI Anda jika terjadi kesalahan.

Perasaan saat ini adalah bahwa fitur-fitur ini cukup untuk menyelaraskan JavaScript dengan kebutuhan pengembang yang paling umum. Fitur yang ditemukan dalam bahasa lain, seperti fitur seperti introspeksi dan refleksi, umumnya tidak diperlukan dalam ekosistem JavaScript, sebagian karena pengembang telah terbiasa dengan gaya stripping TypeScript.

Varian sebelumnya: Docblocks

Perlu dicatat bahwa sesuatu yang mirip dengan sintaks yang diusulkan untuk anotasi yang dihapus sudah ada: tag JSdoc yang terkenal digunakan untuk menambahkan detail jenis ke kode JavaScript:

/**
 * @param name {string}
 * @param age {number}
 */
function sayAge(name, age) {
    console.log(`${name} is ${age} years old.`);
}

Komentar JSdoc didukung oleh banyak alat populer. Namun, ini bukan bagian standar bahasa dan mengharuskan Anda untuk mencampur detail cara kerja kode Anda – jenis yang diharapkan – dengan dokumentasi yang menghadap manusia yang terdiri dari blok dokumen lainnya.

Juga, sintaks JSdoc sangat rinci. Selain nama tag yang diperlukan, biasanya perlu untuk mengulangi elemen yang sudah ada dalam kode Anda, misalnya B. Nama parameter dalam contoh di atas. Jika Anda mengubah parameter di tanda tangan fungsi, jangan lupa untuk mengubah tag JSDoc juga.

Saran sintaks baru mungkin secara fungsional setara dengan docblock, tetapi memberikan pengalaman yang jauh lebih sederhana. Tipe ada di samping targetnya sebagai bagian dari sumber Anda, bukan di blok dokumen yang harus Anda buat dan pertahankan secara terpisah.

Lalu?

Tim dan rekan penulis Microsoft TypeScript, termasuk Bloomberg, Igwalia, dan beberapa kontributor independen, mempresentasikan proposal Fase 0 pada Maret 2022 selama Pleno TC39. Usulan tersebut kini telah memasuki tahap pertama. Namun, penerimaannya masih jauh, karena implementasi di mesin mungkin tidak berlangsung selama “bertahun-tahun”.

Tujuan keseluruhan dari proposal ini adalah untuk mendamaikan ekor panjang kode tidak tertulis JavaScript dengan permintaan saat ini untuk lingkungan pengembangan tertulis yang lebih konsisten. Menggunakan sintaks jarak jauh opsional memastikan kompatibilitas mundur, tetapi meningkatkan kemungkinan bahwa itu tidak akan efektif dalam mempromosikan adopsi dan standarisasi ekosistem. Perdebatan tentang proposal ini diperkirakan akan meningkat dengan pendapat dan perspektif baru seiring dengan berjalannya proposal ke jalur hipotetis.

Baca Juga!

Square sekarang mendukung Ketuk untuk Bayar Apple di iPhone •

Block, perusahaan di belakang Square dan Cash, sekarang mendukung fungsionalitas Tap-to-pay Apple untuk pedagang. Pengguna …