身為受 ML 啟發的語言的粉絲,我總是覺得 ReScript 很有趣。隨著 async-await 最近被添加到該語言中,是時候 ReScript 大放異彩了嗎?
看起來確實很誘人:
...您可以選擇 ReScript 並存取龐大的 JavaScript 生態系統和工具,就像您早已了解 ReScript 一樣1
不會強迫您搜尋其他人製作的預製綁定庫。 ReScript 不需要 TypeScript 的 DefinelyTyped 等價物。 2
這個專案的目標是什麼?
我們的目標是為 JavaScript 平台提供最佳的類型化語言體驗。 3
哇,所以它們為 JavaScript 平台提供了最好的類型化語言體驗,而這一切都不需要預先製作的綁定!讓我們來嘗試一下吧!
當我們嘗試做最基本的事情時,我們很快就碰壁了:
嗯..為什麼 getElementById 不在文件中?文件類型是什麼?
這張圖片是 ReScript 文件中關於它的所有內容。沒有 Dom.document 的定義。 F12 引導我們進入一串空類型定義,因此 Dom.document 看起來確實像是 JS 文件的簡單別名,僅此而已。
等等,所以我確實需要預製綁定? 「不強迫你搜尋別人製作的預製綁定函式庫」怎麼了?
輸入 rescript-webapi npm 套件,綁定到 DOM 和其他瀏覽器特定的 Web API。 。我按照說明和編譯器錯誤進行操作,其中一個錯誤告訴我“bsconfig.json”中可能存在配置問題,即使該檔案現在稱為“rescript.json”。我最終成功了。
它的外觀如下:
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")
您會注意到該文件。不會顯示任何程式碼完成,因為它基本上仍然是非類型化的。我必須知道要呼叫什麼模組和模組函數。
所以 IDE 不會幫助我輸入正確的內容,但它會為我提供有關我正在調用的函數的詳細資訊嗎?不完全是:
作為參考,這裡是開箱即用的 TypeScript:
資訊錯誤、範例連結、詳細類型定義。謝謝。這節省了我的時間和精力,在我打字時教我正確的方法——這是我喜歡靜態類型的主要原因之一。我只是無法透過 ReScript 得到這個。
如果與 DOM 互動 - 創建 JavaScript 的原因 - 不被認為重要到足以保證內建綁定,我想我已經看夠了。
ReScript 在 2024 年準備好了嗎?不。它的官方文件做出了看似完全誤導的崇高承諾。我想如果您要編寫大量主要與其他 ReScript 程式碼互動的 ReScript 程式碼,ReScript 會很有用。但我們不能簡單地忽視「龐大的 JavaScript 生態系統」。想像一下不支持 BCL 的 F#。幸運的是,F# 及其工具旨在無縫使用 C# 類型和文件。當然,一定有方法可以在 ReScript 中利用 DefinelyTyped。在 ReScript 做到這一點之前,我認為它無法與 TypeScript 真正競爭。
以上是ReScript 還沒出現的詳細內容。更多資訊請關注PHP中文網其他相關文章!