Ruby on Rails 作者 DHH 移除了他们开源项目 turbo 中的 TypeScript 代码,大家怎么看

2023-09-07 17:34:48 +08:00
 byj66

DHH 移除了他们开源项目 Turbo 中的 TypeScript 代码,这在推特上引起了很多的讨论,有人赞同,表示欣赏他们的勇气;有人反对,表示这是开历史倒车。我不明白这造成的影响,请问大家怎么看?

推特链接: https://twitter.com/dhh/status/1699427078586716327

文章链接:Turbo 8 is dropping TypeScript

7720 次点击
所在节点    程序员
66 条回复
9ki
2023-09-08 11:56:35 +08:00
先说下我的开发背景, 大概有五年左右的 TS 使用经历, 在两个大型项目中使用过 TS 的严格模式开发.

结论: 从 TS 迁移回 JS 将会是一件常见的事情

TS 对于库开发者来说是很重的心智负担, 我的库开发选型是 vite + vite-plugin-dts

1. 经常出现只生成了 .d.ts, 或者只生成 .js 的情况

2. 在测试时, 经常出现 LSP 没有更新的情况, 导致测试代码时提示语法错误, 必须要手动重启 TS 服务

3. 为了编写复杂类型导致开发本末倒置

以及诸多小问题, 这些小问题合在一起就变成了很影响心态的大问题

TS 对社区的贡献是不可否认的, 但是我想我下一次开发库会选择 Vanilla JS + .d.ts(or jsdoc)
leeg810312
2023-09-08 12:35:00 +08:00
我的工作会用强类型的.net 和 Java ,也用弱类型的 Python ,所以我觉得这和个人开发经验背景有关,习惯了强类型开发平台,会预期所有变量都是确定类型的,在思考代码逻辑时有确定类型会比较顺畅,没有类型就有心智负担得时刻记着变量的实际类型和结构,若没有充分的注释说明,可能不久后重看代码时就会忘记为什么这么写,如果有较好的辅助工具或框架可以解决这个心智负担,弱类型开发平台也会很方便。我认为关键在于一个解决方案可以让开发者将编码重心放在处理逻辑上,而不是分心解决类型可能引发的各种问题,大佬可能不需要借助工具什么的就能做到,但大多数还是需要有效的工具或框架,哪个方案好就会有越来越多的开发者选择。
SleepyRaven
2023-09-08 13:26:35 +08:00
tairan2006
2023-09-08 13:32:38 +08:00
@leeg810312 虽然但是,python 也是强类型

我估计你想说的是动态静态
nomagick
2023-09-08 13:39:05 +08:00
一个坐吃山空的人管他作甚。。。

咱们一般的开发者还是要冷暖自知,小马过河的故事听过没有

他能坐吃山空,一般人有那个山可供坐吃吗
asyncd
2023-09-08 13:55:47 +08:00
@tairan2006 经常一堆人分不清强弱、静态动态的啦
Huelse
2023-09-08 14:02:29 +08:00
纯个人偏好而已,团队代码管理好就可以不用,管理不好就别试图打破常规了。
Huelse
2023-09-08 14:04:56 +08:00
刚看了下推特,有人说这是作者在推广... 在此之前确实不太了解 turbo... 现在知道了
lovedebug
2023-09-08 14:05:10 +08:00
如果你不是大牛,如果你的团队中不都是大牛,那么就选择 typescript 吧
natsu94
2023-09-08 14:19:01 +08:00
开源项目也难拜托一言堂
xuhai951753
2023-09-08 15:49:26 +08:00
可能他写不出屎山代码
也可能未来 turbo 变成屎山之后又会发一篇文章:《 TypeScript is back!》
version
2023-09-08 16:03:21 +08:00
ts 感觉是内卷下的产物..但凡说会 ts 的.工资喊出来都翻倍..前端最明显的..
对于快速开发的产品.根本就不合适做业务
说白了.业务..不可能说增加一个字段..就全链路都要改.都要去定义..
magicdawn
2023-09-08 16:05:10 +08:00
TypeScript 大法好
wonderfulcxm
2023-09-08 16:10:16 +08:00
大佬就是任性,乐趣驱动。
fakeshadow
2023-09-08 16:25:10 +08:00
对是否使用 ts 不做评价。但很明显这个项目就是一言堂,对这种项目最好不要做任何贡献。
laommmm
2023-09-08 17:07:47 +08:00
对于精通开发,逻辑清晰的人来说,TS 是降低效率的罪魁祸首之一。
libook
2023-09-08 17:13:59 +08:00
TS 还没有普及之前就已经很成熟使用 JSDoc/ESDoc 来让 IDE 自动检测潜在问题了,再配合 Linter ,能避免不少问题。

我个人认为,因为 JS 实在太灵活了,所以对开发者要求很高,开发者要从众多可行方案中选择一个最佳的,同时利用经验规避各种问题。
TS 解决问题的核心思路其实就是降低灵活性,增加各种限制和强制做一些工作来避免问题,这对用 JS 很 6 的人来说可能会有些不爽。

但归根结底 TS 只是一个面向企业生产的工具产品,如果根据实际项目和团队情况来评估 TS 可以提升效率,那它就是有价值的。
ShadowPower
2023-09-08 20:21:13 +08:00
我只知道 Ruby on Rails ,没听说过 Turbo 8 。
简单看了看这个项目的文档,似乎用起来几乎不需要写 JavaScript ,只是写一些 HTML 标签。对使用者应该没什么影响,给这个项目贡献代码的人可能比较难受。
leeg810312
2023-09-09 02:05:32 +08:00
@tairan2006 并不是,我知道 Python 是动态类型,不过我没有看到 python 官方说自己是强类型语言,我看到过的都是社区自己讨论的结果,如果官方有说过请指出。我不认为 python 是强类型,因为它可以进行超出隐式转换的类型转换,动态类型是在运行时决定类型,但我认为一旦确定类型,就不能能随意变更,如果变量在作用域内最多只能做隐式转换,我就认可它是强类型
justdoit123
2023-09-09 09:38:47 +08:00
贴个经常要处理的 python 问题。

TypeError: unsupported operand type(s) for -: 'int' and 'NoneType'

不是针对 python ,只是刚好又要修个这种 bug 。js 也是一样,经常有 undefined 问题。

写代码的时候,脑袋里还要记忆某个属性存在不存在是真 tm 的累。然后,这种 NoneType Error 、undefined 问题还是数据相关的,可能你开发的时候压根不会碰到。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/971809

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX