首页 > 资讯 > > 正文

“TypeScript 不值得!”前端框架 Svelte 作者宣布重构代码

来源:InfoQ 2023-05-15 21:03:00

作者 | 凌敏、核子可乐

前端框架 Svelte 作者 Rich Harris:“我太老了,不能再胡闹了”。

作为 JavaScript 的超集,TypeScript 自发布以来深受开发者喜爱,从 JavaScript 迁移到 TypeScript 也一度成为一种趋势。


(相关资料图)

前段时间,State of JavaScript 对近 40000 名 Web 开发人员进行调查,在回答有关 JavaScript 编程风格问题的人中,TypeScript 的使用率高达 98.9%。其中,20.7% 的受访者仅使用 TypeScript 编写代码,而仅使用 JavaScript 的受访者比例为 8.2%。尽管 TypeScript 可以编译成 JavaScript,但对于许多开发人员来说,TypeScript 仍是优先选项。有声音甚至认为,“TypeScript 正在慢慢吞噬前端开发人员的世界”。

但另一个有趣的趋势是,一些开发者正在“反向操作”——从 TypeScript 迁移到 JavaScript。

Svelte 计划重构代码:从 TypeScript 切换到 JavaScript

今年 3 月,前端框架 Svelte 作者 Rich Harris 在接受 The New Stack 采访时表示,Svelte 的第一个主要修订工作正在进行中,目前,团队正在将底层代码从 TypeScript 切换到 JavaScript。Rich Harris 认为,这一更新将使团队能够在今年晚些时候为 Svelte 5 融入“伟大的想法”。

作为一个在 2019 年才诞生的新兴框架,Svelte 发布之初的一大痛点就是不支持 TypeScript。2020 年 7 月,Svelte 终于加入了 TypeScript 支持。如今 3 年不到,就要从 TypeScript 切换到 JavaScript?

消息一出,不少网友跑去 Twitter 求证,Rich Harris 当即给出了肯定的回复,并表示“原生支持 TypeScript 是很棒的选择,直到你有了 TypeScript 的依赖分布,那时它就变成了一个加载的 footgun。 我们欢迎其他人去胡闹,但我太老了,不能再胡闹了 ”。

5 月 9 日,Svelte 团队发布了一个名为 TS to JSDoc Conversion 的 PR,根据描述,Svelte 团队将会从 TypeScript 迁移到 JSDoc。

该举动迅速引发网友激烈讨论。有用户提问“为什么要这么变?我一直在到处搜相关的问题和讨论,但找不到答案。”

至于背后的原因,其实 Rich Harris 在上个月接受采访时就已作出回答。Rich Harris 认为 TypeScript 对开发库来说“ 不值得 ”,团队正转向 JavaScript 和 JSDoc。Rich Harris 在采访中提到:“我们已经决定,在 Svelte 核心代码库中完成从 TypeScript 到 JavaScript 的迁移。原因比较复杂,所以我一直没能做充分解释。”

Rich Harris 表示:“我的观点是,类型确实很棒,但 TypeScript 有点麻烦……一旦用上了.ts 文件,就必须同时使用支持它的工具……所以我逐渐觉得,使用 TypeScript 这样的非标语言并不值得。于是,我们开始将所有类型都放入 JSDoc 注释,这样既保证了类型安全,又回避了缺点。毕竟这只是 JavaScript,所有内容都在注释当中,只要运行代码就行。我们在 Sveltekit 代码中就是这么做的,效果非常好。所以对于 Svelte 4.0,我们也将采取同样的思路、借此加快开发速度。”

Svelte 并不是第一个放弃 TypeScript 的社区。2020 年,Deno 完成了内部代码从 TypeScript 到 JavaScript 的迁移,以减少构建时间,生成高性能代码。最近,有消息称 Deno 也在考虑在内部切换到 vanilla JS。

在相关设计文档中,“问题”部分展示了 Deno 迁移的原因:

在 cli/js 中更改文件时的增量编译时间需要几分钟,修改起来非常缓慢且痛苦。

我们在 cli/js 中使用的打字稿组织/结构正在产生运行时性能问题。例如,我们最近意识到我们无法让 TS 生成一个名为“Header”的类,因为它隐藏了我们 d.ts 文件中的声明。因此,我们将类命名为“HeaderImpl”并将其分配给“window.Header”。但这会产生“Header.name”具有错误值的问题。所以我们被迫添加不必要的运行时代码

Object.defineProperty(HeaderImpl, \"name\", { value: \"Header\" });

修复“Header.name”。谁知道这是否会将 Header 踢出 V8 中的某些优化路径。最佳的做法是生成“class Header { … }”,任何不足都表明设计中存在根本缺陷。

TypeScript 应该可以帮助我们组织代码,但有人可能会声称它具有相反的效果。例如,我们有两个独立的 Body 类https://github.com/denoland/deno/issues/4748。由于生成运行时代码涉及的复杂性,因此很难了解这一点。理想情况下,我们会有一个系统,其中两个 Body 类显然是错误的。

我们的内部代码和运行时 TS 声明必须已经手动保持同步。TSC 没有帮助我们生成 d.ts 文件——当我们之前尝试时,它的开销和复杂性太大了。

从 TypeScript 转向 JavaScript 是一个好选择吗?

虽然 Svelte 不是最流行的 JavaScript 框架,但在开发者心目中却有着极高的地位。开发人员之所以选择 TypeScript 是因为他们发现强类型有助于减少错误,并通过代码补全和弹出帮助等功能改善代码编辑器内的开发体验。

JSDoc 则是一种 API 文档工具,同样可用于类型检查。Visual Studio Code 已经内置 JSDoc 支持,开发者只需添加以下内容:// @ts-check 至 JavaScript 文件开头即可。文档解释道,“当无法推断类型时,可以使用 JSDoc 注释进行指定。”此功能实际由 TypeScript 提供支持,所以 TypeScript 和 JSDoc 可以说是相互依赖。

但一个容易被忽略的细微差别是, Rich Harris 指的主要是库开发场景下的 TypeScript 。如果大家正在构建应用程序,那么实在没必要转向 JSDoc。“这就没必要了,因为在构建应用程序的过程中,大家无论如何都需要构建的步骤。应用开发的重点在于优化代码、控制它的体量,并把一切都捆绑起来。但 如果是想构建一个库,那我强烈建议改用 JSDoc 。”

虽然 Rich Harris 解释了团队从 TypeScript 转向 JavaScript 和 JSDoc 的理由,但面对强势提升的 TypeScript 普及度,Rich Harris 的决策似乎显得有点“非主流”,在 Hacker News 上也引发了许多网友讨论。

Rich Harris 本人也在 Hacker News 上回复道“没想到一个内部重构 PR 能在 Hacker News 上排名第一”,Rich Harris 还进一步介绍了迁移背景,以免大家面对变动胡猜乱想。

Rich Harris 表示,“如果你是 TypeScript 的铁杆批评者,认为我们脱 TS 入 JS 的做法证明了你的观点……抱歉要让你失望了。但如果你是 TypeScript 的狂热拥护者,觉得我们脱离 TS 就是背叛了精神信仰……你同样会失望”。

Rich Harris 补充道,首先,Svelte 不会放弃类型安全,只是决定将类型声明从 .ts 文件转向带有 JSDoc 注释的 .js 文件。作为 Svelte 用户,这不会影响大家在 Svelte 中使用 TypeScript 的能力——从 Svelte 导出的函数,仍拥有大家所熟悉的各种 TypeScript 优点(类型检查、智能许可、内联文档等)。Svelte 对 TypeScript 的支持承诺,比以往任何时候都更加坚定(具体示例请参阅https://svelte.dev/blog/zero-config-type-safety)。

此外,Svelte 用户基本感受不到任何变化。有限的区别就是包体积更小了(不需要传递巨大的 sourcemap 之类),还可以通过 cmd-clicking 使用“Svelte ”及其子包导入的函数来调试框架(它提供的不是无用的类型声明,而是引向实际源代码,开发者可以直接在「node_modules」中编辑并查看实际变化)。

Rich Harris 表示,希望此举能显著降低框架的贡献参与门槛,现在开发者:1)不需要理解如何链入 repo;2)不必在监视模式下运行构建流程;3)不需要为了观察 source 和 dist 代码间的变更而理解其映射关系。

Rich Harris 认为,这次调整将使 Svelte 的用户和贡献者受益,同时也给项目团队减轻负担。团队经常需要针对沙箱测试对源代码做修改,新的工作流要比以往的 build 步骤好很多。体验过 TypeScript 工具那参差不齐质量的朋友肯定都为此头痛过,这次的迁移也帮团队回避了此类问题。相对而言,最大的缺点就是在 JSDoc 中编写类型确实不像在 TypeScript 中那么舒服。这个缺点虽然相对可以接受,但团队内仍然存在争议,当前网上的激烈争论也主要来自这个角度。

“总而言之,我们的迁移决定基于实际需求,而绝不是什么立场问题。长期以来,我们一直以求真务实的态度构建 SvelteKit(反而是在 Svelte 那边更多追求理想主义),毕竟在这边提高生产力才是硬道理。”Rich Harris 总结道。

参考链接:

https://devclass.com/2023/05/11/typescript-is-not-worth-it-for-developing-libraries-says-svelte-author-as-team-switches-to-javascript-and-jsdoc/

https://news.ycombinator.com/item?id=35892250

https://gomakethings.com/ditching-typescript-for-javascript/

本文转载来源:

https://www.infoq.cn/news/dDXbcLHT7teNYSPL3sm7

x
推荐阅读

“TypeScript 不值得!”前端框架 Svelte 作者宣布重构代码

2023-05-15 21:03:00

提前蓄水!5月16日、18日武汉这些地方将停水-当前时讯

2023-05-15 20:10:10

中牟县刁家乡:聚焦“四治一创” 弘扬法治精神

2023-05-15 19:30:16

当前速讯:孕妇吃什么钙片比较好_孕妇钙片什么时候吃最好

2023-05-15 19:02:52

全球百事通!弘元地产3.16亿元竞得浙江衢州1宗宅地 溢价率15.96%

2023-05-15 18:18:26

且末县:志愿服务队 助农服务暖民心

2023-05-15 17:42:10

射洪市成功举办“健走天府 万步有约”健走活动启动仪式

2023-05-15 17:09:23

准妈妈能不能吃水果?牢记这几点吃得更健康→

2023-05-15 16:27:43

国家能源局科技司组织召开新型储能工作(华中区域)座谈会

2023-05-15 16:15:16

全球百事通!湘潭老年公寓有哪些?湘潭老年公寓名单

2023-05-15 15:27:58
相关新闻

“TypeScript 不值得!”前端框架 Svelte 作者宣布重构代码

2023-05-15 21:03:00

提前蓄水!5月16日、18日武汉这些地方将停水-当前时讯

2023-05-15 20:10:10

中牟县刁家乡:聚焦“四治一创” 弘扬法治精神

2023-05-15 19:30:16

当前速讯:孕妇吃什么钙片比较好_孕妇钙片什么时候吃最好

2023-05-15 19:02:52

全球百事通!弘元地产3.16亿元竞得浙江衢州1宗宅地 溢价率15.96%

2023-05-15 18:18:26

且末县:志愿服务队 助农服务暖民心

2023-05-15 17:42:10

射洪市成功举办“健走天府 万步有约”健走活动启动仪式

2023-05-15 17:09:23

准妈妈能不能吃水果?牢记这几点吃得更健康→

2023-05-15 16:27:43

国家能源局科技司组织召开新型储能工作(华中区域)座谈会

2023-05-15 16:15:16

全球百事通!湘潭老年公寓有哪些?湘潭老年公寓名单

2023-05-15 15:27:58

“云旅游”人文性提升策略

2023-05-15 14:59:18

智能建造产业发展论坛在津举办:展示新技术新成果 促进交流与合作

2023-05-15 14:31:20

天天微资讯!试问ATP95后选手哪家强,且看我来为诸位英雄排座次(五)

2023-05-15 13:44:13

上单奶妈天赋_奶妈天赋

2023-05-15 12:54:11

当前讯息:龙门镖局第二季_龙门镖局黄晓明第几集

2023-05-15 12:21:04

长春市核查验收朝阳区2022年度“千村示范”创建工作-世界新动态

2023-05-15 12:00:08

庄行西校村“红帽子”组务工作室,“两长”带头探索“沉浸式”服务2.0版 天天观焦点

2023-05-15 11:12:03

中国制造业规模连续13年居世界首位_当前热点

2023-05-15 11:00:58

要么缴费、要么退出?宅基地“新标准”落地,超过百平1000元起步_速看料

2023-05-15 10:04:23

武汉新城鄂州协同发展示范区12个项目地块集中推出备受瞩目 天天快播

2023-05-15 09:16:06

屹通新材:融资净偿还3.87万元,融资余额4177.98万元(05-12)-热文

2023-05-15 09:11:14

乙二醇和苯乙烯期权今天上市|全球热推荐

2023-05-15 08:03:48

“盲订”汽车如何保障消费者权益

2023-05-15 07:04:06

核能利用 不只是发电_天天报资讯

2023-05-15 06:03:08

【世界速看料】win7重置网络命令 win7重置网络

2023-05-15 04:17:19

乳报科普|奶酪棒应该如何选择?一篇让你了解奶酪棒-焦点资讯

2023-05-14 22:53:42

武汉总部35岁以上员工裁员90%?小米官方辟谣

2023-05-14 21:47:12

世界今日报丨广州白云站综合枢纽六线交汇 配套场站主体结构封顶

2023-05-14 20:21:07

什么情况!人民币再次惊人暴跌,内需不振和出口商囤积美元成元凶

2023-05-14 19:02:11

网友:汕头东海岸大道能摆摊了吗?官方回应:暂未开放! 今日快讯

2023-05-14 18:15:19

汇绿生态:子公司所属联合体签订工程总承包项目合同_天天观焦点

2023-05-14 17:02:50

数量级是什么意思化学_数量级是什么意思

2023-05-14 15:52:18

《忍者必须死3》2023年5月14日礼包兑换码领取

2023-05-14 14:58:57

@太原人,“孝心经济”火,消费需留意 世界即时看

2023-05-14 13:07:21

苹果公司的MR头戴式耳机可能在WWDC 23上首次亮相 天天微头条

2023-05-14 12:00:33

世界头条:南京这座变电站里有个神奇“绿色管家”,还能兼顾监测与科普功能

2023-05-14 10:51:39

中国大学生柔道锦标赛河北迁安落幕

2023-05-14 10:11:34

海南女子身残志坚创业逐梦 带动近500名残障人士就业

2023-05-14 09:04:42

一个中成药,驱走关节里的风寒湿

2023-05-14 07:54:26

焦点速看:火德真君庙_关于火德真君庙介绍

2023-05-14 06:38:56

极性分子亲水还是疏水(极性分子) 天天热文

2023-05-14 05:24:56

二手房需要注意哪些问题_买二手公寓需要注意什么-世界热头条

2023-05-14 02:42:17

千亿益生菌市场变局:从外资独大到国产崛起

2023-05-13 23:56:29

新华全媒+丨“舌尖上”的智能制造:探访全球首家调味品“灯塔工厂”

2023-05-13 21:50:02

马力刺客|性价比新王 二手极星2轮上功率实测

2023-05-13 20:51:46

投资于人民VS投资于战争!华春莹发图对比 世界播报

2023-05-13 19:07:20

热头条丨孩子百日宴祝福语_孩子百日祝福语

2023-05-13 18:04:41

当前快看:摄氏度的那个圈怎么打 谁晓得30度上的那个圈怎么打

2023-05-13 16:46:34

完美钢琴怎么改名字_完美钢琴如何注销当前账号 焦点日报

2023-05-13 15:41:05

五笔查询表-五笔字典在线查询

2023-05-13 14:46:58

全球播报:原副省长被查后病亡,上千万财产仍被没收

2023-05-13 13:49:31

【播资讯】卢尼上半场狂揽5前板&湖人全队仅2个 贡献4分11板

2023-05-13 12:31:03

体验非凡手感 ikbc C104无线机械键盘到手价259元

2023-05-13 11:17:43

低绩效人员不反思自我 快报

2023-05-13 10:19:48

全球播报:诺安精选回报混合基金经理变动:增聘张堃为基金经理

2023-05-13 09:11:02

csgo怎么变回国际服_csgo怎么回国服_观点

2023-05-13 08:51:31

神探威威猫第三部全集_神探威威猫

2023-05-13 07:44:25

主营业务成本属于什么科目类别 主营业务成本属于什么科目

2023-05-13 06:10:35

环球微资讯!当日快讯:国家发改委主任郑栅洁:创新完善宏观调控,持续扩大国内需求

2023-05-13 04:52:04

微速讯:上海长宁:创新研用,深耕教育数字化转型重点场景

2023-05-13 02:10:59

天天消息!娶妻娶贤不娶貌_娶妻

2023-05-12 23:55:19

斯科尔斯认为博格巴该在曼联踢左路的位置

2023-05-12 22:12:43

收割、播种热火朝天 各地抢抓农时为丰产打好基础-世界聚看点

2023-05-12 21:25:21

家里有这3种银行卡的留心了,现在清楚不迟,看完记得叮嘱家人

2023-05-12 20:10:36

好看的字体样式转换app_好看的字体样式|快资讯

2023-05-12 19:36:26

医保门诊报销起付线如何计算?换医院门诊会重新计算吗?为啥有门槛费

2023-05-12 19:01:20

加速推进供应链管理变革!卧龙集团SRM升级项目成功上线_动态焦点

2023-05-12 18:42:25

降薪1500万,收获防守大闸+外线刺客!哈登让利,深谋远虑今兑现

2023-05-12 18:10:24

每日讯息!5名男子冒充“白富美”专骗老外,每天上班到凌晨

2023-05-12 17:58:25

天天最资讯丨必创科技:截至2023年5月10日,公司股东人数为13,554户

2023-05-12 17:07:34

热点聚焦:网吧模拟器2(网吧的游戏菜单怎么弄)

2023-05-12 16:44:42

电脑卡在正在启动windows界面安全模式进不去 电脑卡在正在启动windows界面

2023-05-12 16:38:36

Keyvany的梅赛德斯奔驰AMGG63Tune是如此华而不实以至于Mansory可能会批准它|世界新要闻

2023-05-12 16:16:49

中铝河南洛阳铝加工有限公司熔铸车间燃气单耗逐步优化

2023-05-12 16:00:18

1.6亿人正在B站看纪录片,《人生一串4》等作品将上线 全球快资讯

2023-05-11 19:35:12

每日热闻!我要的世界存在你耳边_我要的世界

2023-05-11 18:17:42

龙华街道可可沙龙服务V站爱心墙人气越来越旺

2023-05-11 17:43:52

全球观热点:自驾游租车app哪个靠谱?

2023-05-11 17:18:07

环球时讯:欧盟首次拟因向俄出售设备制裁7家中企商务部:不要开恶劣先河

2023-05-11 16:41:45

中国星辰 | 天舟“家族”输送“太空快递”的“高光时刻”

2023-05-11 16:23:33

开封市禹王台区南郊乡开展消防安全大检查暨安全宣传进社区活动

2023-05-11 15:57:34

慈善游戏销售平台Humble去年共支持了1万多个慈善活动

2023-05-11 15:06:22

这5种疾病或有遗传的风险,要了解,提前做好治疗和检查

2023-05-11 14:52:09

焦点关注:《梦中的那片海》什么时候播出 梦中的那片海演员表

2023-05-11 14:01:36

《庆余年2》范闲满血复活,这是国产季播剧的伟大胜利

2023-05-11 13:32:21

天舟六号货运飞船发射任务取得圆满成功_天天新动态

2023-05-11 12:47:56

视焦点讯!一嗨租车增资至5.8亿美元

2023-05-11 12:26:55

世界球精选!山东是华东还是华北_山东属于华北还是华东

2023-05-11 11:47:03

浙江力诺:预计未来产能能满足公司15亿元生产产值需求

2023-05-11 11:18:23

广脉科技股东户数下降4.10%,户均持股4.04万元

2023-05-11 10:52:56

蒋欣个人资料及简介身高体重_蒋欣个人资料及简介

2023-05-11 10:40:07

今日最新!失地保险每月领多少钱 失地保险和社保会冲突吗?

2023-05-11 10:00:06

精选!太空生活,他们在守护

2023-05-11 09:49:39

环球简讯:建信期货:原油短期振荡运行为主

2023-05-11 09:11:14

全球热门:头狼:黄金2031现价多

2023-05-11 08:53:26

雷军微博调研:米粉投票选出最美Ultra 小米11 Ultra胜出 天天视点

2023-05-11 08:19:34

天天热推荐:通策医疗:融资净偿还563.13万元,融资余额15.4亿元(05-10)

2023-05-11 07:11:45

道指跌超300点

2023-05-11 06:33:19

环球资讯:2-0!国米史诗一夜:欧冠破咒首胜米兰!一只脚踏进决赛

2023-05-11 05:45:29

世界报道:海马体拍照是什么意思_海马体拍照

2023-05-11 03:50:29