Sebagai peminat bahasa yang diilhamkan ML, saya sentiasa mendapati ReScript menarik. Dengan async-await yang kini ditambahkan pada bahasa baru-baru ini, adakah sudah tiba masanya untuk ReScript bersinar?
Ia pasti kelihatan menarik:
... anda boleh mengambil ReScript dan mengakses ekosistem dan alatan JavaScript yang luas seolah-olah anda sudah lama mengenali ReScript1
Tidak memaksa anda untuk mencari perpustakaan mengikat pra-buat yang dibuat oleh orang lain. ReScript tidak memerlukan yang setara dengan TypeScript's DefinitelyTyped.2
Apakah matlamat projek ini?
Kami berhasrat untuk memberikan pengalaman bahasa taip terbaik untuk platform JavaScript.3
Wah, jadi mereka menyediakan pengalaman bahasa taip terbaik untuk platform JavaScript, semuanya tanpa memerlukan pengikatan pra-dibuat! Jom cuba!
Kami dengan cepat memukul dinding sambil kami cuba melakukan perkara paling asas yang mungkin:
Hmm.. kenapa getElementById tiada pada dokumen? Apakah jenis dokumen?
Gambar ini ialah semua dokumentasi ReScript katakan mengenainya. Tiada definisi Dom.document. F12 membawa kita ke rantaian definisi jenis kosong, jadi Dom.document kelihatan seperti alias mudah untuk dokumen JS, tidak lebih.
Tunggu, jadi saya memerlukan pengikatan pra-dibuat? Apakah yang berlaku kepada "Tidak memaksa anda untuk mencari perpustakaan mengikat pra-buat yang dibuat oleh orang lain"?
Masukkan pakej npm rescript-webapi, Pengikatan pada DOM dan API web khusus pelayar lain.. Saya mengikuti arahan dan ralat pengkompil, termasuk yang memberitahu saya bahawa saya mungkin menghadapi masalah konfigurasi dalam "bsconfig.json", walaupun fail ini kini dipanggil "rescript.json". Saya berjaya akhirnya.
Begini rupanya:
let elem = document->Document.getElementById("id") // For the uninitiated, -> is the pipe operator. // a->foo means foo(a) // a->foo(b) means foo(a, b) // The above code is therefore equivalent to let elem = Document.getElementById(document, "id")
Anda akan melihat dokumen itu. tidak akan memaparkan pelengkapan kod, kerana ia pada dasarnya masih tidak ditaip. Saya perlu tahu apa modul dan fungsi modul untuk dipanggil.
Jadi IDE tidak akan membantu saya menaip perkara yang betul, tetapi adakah ia memberi saya maklumat yang baik tentang fungsi yang saya panggil? Tidak juga:
Untuk rujukan, ini TypeScript di luar kotak:
Ralat bermaklumat, pautan ke contoh, definisi jenis terperinci. terima kasih. Ini menjimatkan masa, usaha, mengajar saya dengan betul semasa saya menaip - ini adalah salah satu sebab utama saya suka menaip statik. Saya hanya tidak mendapat ini dengan ReScript.
Jika berinteraksi dengan DOM - sebab JavaScript dicipta - tidak dianggap cukup penting untuk menjamin pengikatan terbina dalam, saya rasa saya sudah cukup melihatnya.
Adakah ReScript sedia pada tahun 2024? Tidak. Dokumentasi rasminya membuat janji-janji tinggi yang nampaknya mengelirukan. Saya rasa ReScript boleh berguna jika anda akan menulis banyak kod ReScript yang kebanyakannya berinteraksi dengan kod ReScript lain. Tetapi seseorang tidak boleh mengabaikan "ekosistem JavaScript yang luas". Bayangkan F# tanpa sokongan untuk BCL. Nasib baik, F# dan alatannya direka bentuk untuk menggunakan jenis C# dan dokumentasi dengan lancar. Pasti ada cara untuk memanfaatkan DefinitelyTyped in ReScript. Sehingga ReScript melakukan ini, saya tidak fikir ia boleh bersaing secara serius dengan TypeScript.
Atas ialah kandungan terperinci ReScript belum ada. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!