ReScript 与 TypeScript,谁是前端圈的“当红辣子鸡”

代码 代码 1629 人阅读 | 0 人回复

<
择要: ReScript 战 TypeScript 的呈现皆是为了更好天时用JavaScript,但二者仍是有很年夜的不同。
本文分享自华为云社区《【云创共驻】ReScript 战 TypeScript 有甚么同同?》,做者: 胡琦 。
“有人的处所便有江湖,有江湖的处所便有争辩”,前端开拓范畴也好像那个江湖,新手艺降生的同时常常也会陪伴着三言两语的争辩,做为从业者,理性看待即是,究竟结果“扔开营业场景道手艺选型皆是耍混混”。不过,明天我们便“耍耍混混”,道一道 ReScript 战 TypeScript 。
布景

150434f886saxhysxasm8g.png

闭于“ReScript 战 TypeScript 有甚么同同?”,知乎上曾经有年夜佬正在会商了,笔者做为止业里的“吃瓜大众”,发明贺师俊也存眷了那个成绩,或许闭于 ReScript 战 TypeScript 的会商再将来的日子里会愈来愈剧烈,究竟结果 ReScript 是“去自将来的快速、简朴、齐范例的 JavaScript”,尽管 ReScript的中文社区借没有太完美,但从搜刮引擎(PS:此处解除某度)中也能找到“JavaScript 的另外一个替换品:ReScript”、“ReScript 是甚么梗,更好的 TypeScript?”之类的文章,不过多数是翻译过去的文章,因而炸药味出有那末浓,反而是知乎上的会商比力剧烈:
  网友1: ReScript 是妙手的兵器, TypeScript 更像是 Java,好招人。
  网友2:五年从前大家也会道「TypeScript 是妙手的兵器,JavaScript 更像是 Java,好招人」。
150435tsso7odsposu0dhu.png

信赖大家对 TypeScript 没有生疏了吧,VS Code 便是操纵 TypeScript 编写的,前端圈如今传播“任何可以用JavaScript完成的使用体系,终极皆势必用TypeScript完成”,险些一切的前端开源项目皆正在拥抱 TypeScript,几乎是前端圈的“当白辣子鸡”。比拟之下, ReScript 临时出有那么著名气鼓鼓,但究竟结果是属于将来的,尽管如今从 Github 的 star 数目去看,ReScript 借不敷以摇动 TypeScript 远乎“把持”的“统治职位”,但常行讲“三十年河东,三十年河西”,着眼于将来,ReScript 如今是“最被低估的手艺”。从另外一个角度去看, ReScript 的中心开拓者好像 Vue.js 一样便有熟习的中文姓名–张宏波,笔者正在那里也祈望 ReScript 也会具有壮大的中文社区。
150435hjha7pypn87a7hlv.png

不异的目的

ReScript 战 TypeScript 最年夜的不异面便是皆是处理“如何正在JavaScript仄台上处理超年夜范围编程的成绩”,那里为何夸张“超年夜范围”?假如您到场过出有范例束缚的多人合作项目,大要会战笔者一样碰到诸如 “Cannot read property ‘xxx’ on undefined“ 之类的成绩,然后一止一止代码来找那个”xxx“再处理成绩,早正在 2018年,非常监控仄台Rollbar从 1000+ 项目中统计了前端项目中 Top10 的毛病范例,此中便有 7 个是范例毛病:
150435ijll2ullh7chdkk7.png

究竟证实,此中许多皆是 null 或 undefined 的毛病。假如您操纵严厉的编译器选项,像TypeScript如许的静态范例查抄体系能够协助您避免那些毛病, 操纵 ReScript 一样也能处理如许的痛面。究竟结果 JavaScript 只是一个礼拜制出的言语,ReScript 战 TypeScript 等言语弥补了 JavaScript 中存正在的缺点。
ReScript VS TypeScript

尽管 ReScript 战 TypeScript 的呈现皆是为了更好天时用JavaScript,但二者仍是有很年夜的不同,好比:


  • 范例体系的完成思路便纷歧样,TypeScript 的目的是涵盖全部 JavaScript 功用散,而 ReScript 仅涵盖 JavaScript 的一个粗选子散;
  • ReScript 代码出有 null/undefined 毛病;
  • ReScript 速度十分快,它是用于 JavaScript 开拓的最快的编译器战构建体系东西链之一;
  • 没有需求范例正文,那些范例是由言语揣度出去的,而且十分准确;
  • 迁徙到 TypeScript 是广度劣先的,而迁徙到 ReScript 是深度劣先的。
如何明白?我们先看看最典范的Hello World
Hello, TypeScript

TypeScript 供给正在线的 PlayGround,以至借能够分享,好比以下代码的share url: https://www.typescriptlang.org/play?#code/MYewdgziA2CmB00QHMAUAiAEraSAEAKgJ4AOsAysAE4CWJALugJRA
150435ia1u4l475zslulfq.png

我们把鼠标放到console.log上便会看到提醒:(method) Console.log(message?: any, ...optionalParams: any[]): void (+1 overload),那便是 TypeScript 的奇异的地方。
Hello, ReScript

ReScript 一样也供给正在线的 PlayGround,一样也撑持分享,好比以下代码的share url: https://rescript-lang.org.cn/try?code=FIZwdANg9g5gFAIgBIFMLQAQCUUGUDGATgJYAOALggJRA
150436j1j8heka1bb888jt.png

此处我们其实不能操纵console.log,需求用Js.log,Js.log("HelloWorld")大要是比力小的一个示例,一样的鼠标放上来会提醒string => unit,并且此处的字符串必需用单引号包裹,范例揣度为 string 。
当地运转 ReScript

  1. git clone https://github.com/rescript-lang/rescript-project-template
  2. cd rescript-project-template
  3. npm install
  4. npm run build
  5. node src/Demo.bs.js
复造代码
150436fbyj8dzzjruggcvy.png



  • 编译速度
笔者测验考试了当地运转 ReScript,装置民圆文档下载了 Hello World 到当地,施行 npm run start,感触感染到了 ReScript 的编译速度,太快了!忍不住念起尤年夜的 Vite – “fast!fast!fast!”
150436mjmmsozd2sifbx7s.png

此处出有比照 TypeScript 的编译速度,根据网友的道法:
操纵ReScript的尽年夜部门项目200ms能删量编译完,而TypeScript大要正在一个10K文件的monorepo便间接内乱存溢出挂失落了。


  • 范例揣度
正在 ReScript 中,没有需求范例正文,那些范例是由言语揣度出去的,而且十分准确;而正在 TypeScript 中,假如出有闪现增加范例正文,则默许是 any ,以下图中代码,ReScript 能一般揣度出入参应为 int, 而 TypeScript 则可以编译经由过程。
150437oo5qjppz9zpzad9n.png

除此以外, ReScript 另有管讲、形式婚配、共同的 if 语句等等,那些战 TypeScript 正在细节上有宏大的不同,假如您对 ReScript 战 TypeScript 感喜好,欢送探究并取我分享!

面击存眷,第一工夫理解华为云新颖手艺~

免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作!
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则