ReScript 初识

161 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第19天,点击查看活动详情

CoffeeScript、TypeScript、PureScript ...... 现在我们又有了 ReScript。诚然,它不是什么“新的”语言,但它确实是最近几年出现的、试图取代微软的 TypeScript 的语言。

ReScript 有什么特殊的?

是什么使 ReScript 与所有的替代语言都不同呢?

像其它替代语言一样,ReScript 也是具有强类型系统的 JavaScript。根据官网的说法(以及我自己进行的测试),它的类型系统:

  • 比 Typescript 更好,因为它有更简单的推断方式。是的,TS 可以推断某些类型,但它不鼓励你让它这样做。然而,ReScript 鼓励你这样做,而且它的解释器非常擅长捕捉拼写错误。
  • 静态。因为它在运行时不使用。根据官网的说法,编译期间的静态推断可以确保你的代码免受那些讨厌的错误的影响。
  • 快速。在我对语言进行测试之后,我可以证明这一点。使用 VSCode 插件,你只需保存文件即可立即获得反馈。

诚然,ReScript 的类型系统听起来很棒,但这还不是全部。事实上,它并不试图成为 JavaScript 的超集,而是想成为一个功能列表。

这意味着他们从原始的 JavaScript 提炼出了自己认为合适的内容。在实践中,这意味着你没有诸如类这样的构造、以及诸如 console 这样的松散全局对象。分号呢?不需要分号。

作为一名 JavaScript(或 TypeScript)开发人员,这意味着你必须重新学习这门语言。不仅仅是学习如何使用 RS 添加类型注释,你还必须重新学习一切是如何工作的。是不是太难了?并非如此,如果你还使用过其他语言,比如 Ruby 或 Python 等,你就不会觉得这很难。

例如,IF语句现在更改为:

if myVariable {
  theCallThisFunction()
} else {
  callthisOtherFunction()
}

//Or you can even do

let myResults = if myVariable {
  theCallThisFunction()
} else {
  callthisOtherFunction()
}

IF 条件上的括号不再需要,并且 IF 的主体是一个返回最后执行行的表达式。你可以将整个构造分配给一个变量,就像在原生 JS 中使用三元运算符一样。