首页 >web前端 >js教程 >ReScript 还没有出现

ReScript 还没有出现

Patricia Arquette
Patricia Arquette原创
2024-10-02 14:18:30473浏览

作为受 ML 启发的语言的粉丝,我总是觉得 ReScript 很有趣。随着 async-await 最近被添加到该语言中,是时候 ReScript 大放异彩了吗?

看起来确实很诱人:

...您可以选择 ReScript 并访问庞大的 JavaScript 生态系统和工具,就​​像您早已了解 ReScript 一样1

不会强迫您搜索其他人制作的预制绑定库。 ReScript 不需要 TypeScript 的 DefinelyTyped 等价物。2

这个项目的目标是什么?
​我们的目标是为 JavaScript 平台提供最佳的类型化语言体验。3

哇,所以它们为 JavaScript 平台提供了最好的类型化语言体验,而这一切都不需要预先制作的绑定!让我们来尝试一下吧!

当我们尝试做最基本的事情时,我们很快就碰壁了:

ReScript is not there yet

嗯..为什么 getElementById 不在文档中?文件类型是什么?

ReScript is not there yet

这张图片是 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 不会帮助我输入正确的内容,但它会为我提供有关我正在调用的函数的详细信息吗?不完全是:

ReScript is not there yet

作为参考,这里是开箱即用的 TypeScript:

ReScript is not there yet

信息错误、示例链接、详细类型定义。谢谢。这节省了我的时间和精力,在我打字时教我正确的方法——这是我喜欢静态类型的主要原因之一。我只是无法通过 ReScript 得到这个。

如果与 DOM 交互 - 创建 JavaScript 的原因 - 不被认为重要到足以保证内置绑定,我想我已经看够了。

ReScript 在 2024 年准备好了吗?不。它的官方文件做出了看似完全具有误导性的崇高承诺。我想如果您要编写大量主要与其他 ReScript 代码交互的 ReScript 代码,ReScript 会很有用。但我们不能简单地忽视“庞大的 JavaScript 生态系统”。想象一下不支持 BCL 的 F#。幸运的是,F# 及其工具旨在无缝使用 C# 类型和文档。当然,一定有一种方法可以在 ReScript 中利用 DefinelyTyped。在 ReScript 做到这一点之前,我认为它无法与 TypeScript 真正竞争。

以上是ReScript 还没有出现的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn