刚才看到 https://juejin.cn/post/7218117377052377143 , 深有同感。
本人做项目外包,给客户的代码常规都使用js
实现,极少需要给客户直接使用的类库才使用 ts(也因为万恶的 vscode 给自家的语言做了代码提示优化)。在我看来ES 5/6/7
才是原滋原味的 js ,而不是披着 js 外衣的 C#。
![]() | 1 hsfzxjy 2023-05-01 22:04:54 +08:00 via Android 但是 ts 的代码提示真的很爽 |
![]() | 2 codehz 2023-05-01 22:18:57 +08:00 via iPhone 这篇钓鱼文还真有人翻译也是笑死( 看看原文发布时间 |
![]() | 3 kkocdko 2023-05-01 22:19:42 +08:00 ![]() 0. 由于“TypeScript 是 Javascript 的超集”,所以不存在“完全放弃原生 JS”的说法。没有人会阻止你写 AnyScript 。我平时写的时候,就只会在发现类型提示不见了之后才主动补充一下定义。 1. TypeScript 不太可能消亡,因为现有的针对 Javascript 的智能提示大多是基于 tsserver ,这是强大的 TypeScript 给我们的恩赐。 2. 针对编译速度问题,可以使用 ESBuild ,SWC 等方案,由于它们只做类型擦除等原因,速度很快。我这里有一个中小规模的前端项目,编译时间几乎可以忽略( esbuild 0.3s )。 3. 使用 JSDoc 替代 TypeScript 在大多数时候可行,但是你想想,是写 `/** @param Type name */ function foo(name)` 方便,还是写 `function foo(name: Type)` 方便呢?我觉得只要你不写出类型体操,TypeScript 没有什么不好的地方。类型体操是库作者应该纠结的事。 |
![]() | 4 DonaidTrump 2023-05-01 22:21:37 +08:00 预计楼下开始打嘴仗 |
![]() | 5 crysislinux 2023-05-01 22:28:04 +08:00 via Android 外包你不好写的时候就写 any script 好了。现在的 jsdoc 实际上大部分时候已经是靠 typescript 工作了。原本的 jsdoc 语法有很大的局限性。 |
![]() | 6 lisongeee 2023-05-01 22:39:38 +08:00 ![]() 如果这个提案 <https://github.com/tc39/proposal-type-annotations> 进入 stage 4 ,你又准备写哪个版本的 js 呢? |
![]() | 7 pursuer 2023-05-01 22:41:44 +08:00 我更习惯写 typescript ,找库的话也是 typescript 优先,不然看代码有点痛苦 |
![]() | 8 lujiaosama 2023-05-01 22:54:33 +08:00 ts 写熟练了根本没啥心智负担, 就当成简单的类型提示来用, 又不是成天搞类型体操. 视 ts 如洪水猛兽的真的难以理解, ts 带来的健壮性给人一种安全感, 我相信也没多少人写原生 JS 会加上 use strict. ts 带来的好处小项目是体现不出来的, 在上了规模项目, 多人协作时就非常关键了,需求频繁变动,破坏性改动时 ts 带来的好处不言而喻. 要吐槽的是 ts 的类型收窄, 还是不够智能时常得断言. 以前合法的现在不合法了, 打开项目一片红. 如果是第三方库的报错就更头疼了. |
9 renmu 2023-05-01 22:56:01 +08:00 via Android 我喜欢别人项目是 ts 写的,而我用 js (狗头) |
![]() | 10 dumbass 2023-05-01 22:56:31 +08:00 via iPhone i love ts.再小的项目我也要上 ts ,为的就是让它给我自动提示 |
![]() | 11 rb6221 2023-05-01 22:58:55 +08:00 ts 那些丰富的特性本来就是因为大型和超大型项目的复杂度才诞生的,你写个 demo 纠结什么啊,拿自己长处抨击别人短处是不是有点离谱了 |
![]() | 12 huijiewei 2023-05-01 23:02:33 +08:00 我写 hello world 也用 js 一切抽象在 hello world 面前都是 x |
13 dayeye2006199 2023-05-01 23:11:4 +08:00 via Android 如你所说,因为你一个人写外包。你要是包工头,可能就想着 ts 了 |
![]() | 15 opentrade 2023-05-02 00:03:44 +08:00 自己一个人写着写着就到处是 any |
16 humbass OP @dayeye2006199 我刚好就是包工头,多的时候有招了 12 个同事,目前经济不好只有 3 个同事。顺便说一句,隔壁写 ts 的和写 java 的外包都倒闭了,原来我们这个孵化器有 9 个外包公司。 |
![]() | 17 cosmain 2023-05-02 00:57:39 +08:00 |
![]() | 18 cosmain 2023-05-02 00:58:03 +08:00 我错了,是 3 月 20 日 |
![]() | 19 KMpAn8Obw1QhPoEP 2023-05-02 00:59:42 +08:00 via Android @cosmain 有没有一种可能 Mar 是三月的缩写 |
![]() | 20 KMpAn8Obw1QhPoEP 2023-05-02 01:00:11 +08:00 via Android @cosmain 我错了 回复时没刷新内容( |
![]() | 21 KMpAn8Obw1QhPoEP 2023-05-02 01:03:22 +08:00 via Android 就正题来说 本来就是一个东西 为啥要分开 各有优势和使用场景 哪个合适用哪个就好了嘛 想短平快的 可以预见不会大规模重构也不会扩展维护 那肯定是 JS 撸完拉倒 想写着更踏实 更易于阅读 需要不定期重构 且长期维护 那从最开始就用 TS 好好规划一下 收益多多 |
![]() | 22 Aloento 2023-05-02 01:03:53 +08:00 ![]() 笑死了,为什么 V2 上还会有这样的问题 |
23 ochatokori 2023-05-02 01:33:37 +08:00 via Android 前端喜欢用 js 写,nodejs 后端喜欢用 ts 写 |
24 TWorldIsNButThis 2023-05-02 01:39:50 +08:00 我用 react 没这个问题 |
![]() | 25 BeautifulSoap 2023-05-02 01:54:00 +08:00 via Android ts 有各种问题,比如编译后失去变量类型导致无法简单做 validation ,无法 di 注入,json 解析都没法确保和定义的 class 结构一致等,所以导致 ts 项目里装饰器满天飞。但那都是别的问题,和去用 jsdoc 来做类型注释写个 hello world 等级的代码就发文章是另一回事。 |
26 Leviathann 2023-05-02 02:01:49 +08:00 @BeautifulSoap 很多 validation 库提供的 codec 功能保证了运行时结构和定义一致,只需要在输入输出的地方调用即可 |
27 asuraa 2023-05-02 08:23:25 +08:00 大部分人写 ts 最后全是 any 那你还不如写 js 呢 |
![]() |   28 justin2018 2023-05-02 09:12:20 +08:00 除了类型体操 和 AnyScript , 其他的还好~~ 主要是为了编译器补全~ |
![]() | 29 learningman 2023-05-02 10:15:17 +08:00 在我看来汇编才是原滋原味的编程语言 ,而不是运行时解释的 js 。 |
![]() | 30 FreshOldMan 2023-05-02 10:42:41 +08:00 js 这种没类型的,效率高在哪里,你呆的都是创业小公司吧,协一坨类型不明的 data ,class ,这个后面谁来维护 |
![]() | 31 xiangyuecn 2023-05-02 11:31:50 +08:00 写 c++ ,编译成 js |
![]() | 32 ruoxie 2023-05-02 15:15:19 +08:00 TS 给我更好的的开发体验,所以我用 TS 。你觉得原生 JS 给你更好的开发体验,那你就用原生 JS 。别为难自己就好 |
![]() | 33 AV1 2023-05-02 18:02:02 +08:00 写 TS 的人按下.就知道 object 里的字段了, 写 JS 的人还在翻过期的文档,然后一边单步调试一边 console.log ,摸索这 object 到底塞了啥。 |
34 a379395979 2023-05-02 22:06:42 +08:00 感觉也就前端圈疯狂内卷的结果吧,就连 npm 都有 pnpm 、yarn 。 弱类型语言也很多,也没见哪个用别的语言来转成自己的。。 |
![]() | 35 flyqie 2023-05-03 01:44:44 +08:00 via Android @a379395979 #34 其他不评论,主要最后一段。 归根到底还是设计 js 的时候大家都没想到浏览器会发展到今天这样。。 结果搞得现在只能修修补补,各种转回到 js 的语言也是因为没办法直接改掉 js 这座屎山所做的妥协(后端相对来说干净很多,因为没那么重的包袱)。 |
![]() | 36 Aloento 2023-05-03 01:54:05 +08:00 |
37 a379395979 2023-05-04 08:45:59 +08:00 @flyqie 你要说十几年前 js 是座屎山我同意,现在嘛。。 就感觉前端这个圈子没事干挺奇怪的 |
38 ko1haha 2024-07-21 13:55:47 +08:00 我喜欢 js ,因为我的代码风格和混淆后的代码高度一致,参数名首选 e ,次选 a,b,c,d ,这让我觉得那些闭源的浏览器扩展也是开源项目。(狗头) |
39 roundgis 206 天前 via Android @crysislinux 和 gcc 是用 cpp 的 但是上用 c 的人更多是一道理 |