Rumah  >  Artikel  >  hujung hadapan web  >  ReScript belum ada

ReScript belum ada

Patricia Arquette
Patricia Arquetteasal
2024-10-02 14:18:30430semak imbas

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:

ReScript is not there yet

Hmm.. kenapa getElementById tiada pada dokumen? Apakah jenis dokumen?

ReScript is not there yet

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:

ReScript is not there yet

Untuk rujukan, ini TypeScript di luar kotak:

ReScript is not there yet

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Menukar versi Angular CLIArtikel seterusnya:Menukar versi Angular CLI