为什么你们要选择 TypeScript?

2021-05-06 14:45:03 +08:00
 BoringTu
我只是不明白为啥这么多人会选择 ts ?理由是啥啊? ts 出来的那年我就关注了,但所有的理由在我看来都是莫名其妙的观点,但这些年怎么还用的人越来越多了?
咱就说脑回路很神奇的把本身弱类型为优势的 JavaScript,套了一层强类型的壳的这步操作我就看不懂了,这是图啥呢?这样代码写着不难受么?那你直接用 Java 写然后编译成 JavaScript 不好么?
网上有很多人说,用 ts 可以减少因类型导致的错误。大哥,你是个程序员,你连自己写的代码是怎么跑的都不知道的话,转行好吗?我十一年的程序员了,js 写了 11 年,js 的其他高级语言我也都研究过,包括 ts,但现在只用 es6 和 coffee2,我怎么就一次都没碰到过我连变量背后的值类型导致的 bug 呢?
24473 次点击
所在节点    JavaScript
303 条回复
Kasumi20
2021-05-06 21:16:31 +08:00
11 年的就这样?就这?
April5
2021-05-06 21:28:35 +08:00
我司后端之前有一个类似和 proto 类似的文件,之前如果使用 js 编码时需要在代码和 proto 文件间来回横跳,以确定消息中是否真的存在某个参数。
之后切换到 ts,只需要根据这个 proto 文件生成对应的 ts 定义,我编码的时候 vscode 就能提醒我这个消息中存在哪些参数,然后这份 ts 定义甚至可以给到前端使用,充当 swagger 文档的作用,光这一点已经足够我切换 ts 了。
across
2021-05-06 21:36:43 +08:00
你要说出自己的应对场景和技能结构,按我的理解,这 11 年经验应该是从 html 到 jQuery 到 react 这种,所以只觉得 js 好,ts 多余。

一般理解不了 ts 的都是这类,前端业务代码“更新”,指的是删掉旧无效的,加入新业务改版。这时候的 js 开发都是设计数据流的思路,相当于只做个视图界面。
然而重量级的大型项目,更多是一层一层往上垒代码,内部模块划分、上下层调用,接口都要有明确的规则,不然光靠人脑效率太低了。 我这边用 ts 的代码,一个编辑器工具项目,近百万行,底层就是 ts 当 c++写的,定义数据结构,常用算法库等。 上层界面一直在改版更新,用的 react,ts 对 js 的优势就没那么大。
doommm
2021-05-06 21:59:41 +08:00
@LancerComet 你说的是 reflect-metadata 吗
loveyou1
2021-05-06 22:18:27 +08:00
用起来最大的好处就是少写 bug 和代码提示补全。
jiangzm
2021-05-06 22:24:18 +08:00
类型检查、智能提示、面向对象 TS 这些还不够吗。

在多人大型项目中 ts 的优点尤为明显和重要。
james122333
2021-05-06 22:33:08 +08:00
为了这主题... 个人的话也比较喜欢弱型别 强型别的语言就算工具再怎么成熟动态性也是不能比的
至于多人协作 这完全就是人习惯好不好的状况 强型别照样可以写的一坨难以维护的代码 转型问题、因物件特性带来的耦合都是很麻烦的 很容易造成历史问题 接手项目两种语言会有不同的问题点
这到最后一切就是根源政治没错 我都觉得自己用的最舒畅 独孤九剑
abersheeran
2021-05-06 22:41:16 +08:00
还行……主要是编辑器的代码提示比较爽,还有就是用别人的 TS 代码相对容易那么一点。

我本人如果只写个小页面,也只用 JS 的。看场景用吧,以前写 C 的时候我还偶尔写写汇编呢。
nanxiaobei
2021-05-06 23:10:19 +08:00
反正我不爱用,写起来太繁琐了,而且代码也很丑

不过用的也很好理解,就跟公司的制度一样,多了确实繁琐,但是能保证不出大错,所以领导喜欢
fuermosi777
2021-05-07 01:03:45 +08:00
@littlemcdull 已经说的很中肯了,lz 还嘲讽他。。。
说真的如果 lz 如果在大公司待过,或者 contribute 过大型项目,大概率不会问出这个问题。
dayeye2006199
2021-05-07 04:51:40 +08:00
> 大哥,你是个程序员,你连自己写的代码是怎么跑的都不知道的话,转行好吗?

在公司干,或者去开源社区,大部分代码其实都不是自己写的。。这个时候少个类型系统你就知道有多难受了
christin
2021-05-07 07:27:37 +08:00
你觉得 windows 难用所有人都得觉得难用?
你用不惯 ts 所有人都得跟着你一起反对 ts ?
上来就说自己工作了 11 年干嘛啊 甩资历吗?
lrh3321
2021-05-07 08:09:19 +08:00
类型本身就是一种文档的,大家都不喜欢写文档。上了 ts,至少项目代码可维护性上升了
CaffreySun
2021-05-07 08:19:30 +08:00
从团队和项目角度去想,提高效率,较低成本,为什么不用 TS ?
joesonw
2021-05-07 08:23:01 +08:00
1 年经验 x11 吧?没在团队里工作过?自己知道怎么传参有什么用?别人知道吗?
看回复历史,代码格式化都没用过,想来也没 lint,切图 11 年确实 js 够用
whileFalse
2021-05-07 08:34:04 +08:00
语言只是工具。

我是 DevOps,写和命令行、文件频繁交互的小脚本时用 Shell,写逻辑复杂的工具时用 Python,用 CDK 这个跨语言 SDK 时用 TypeScript 因为代码提示做得好。

流行的面向业务开发的这些语言都已经优化的十分友好了,有经验的开发者应该能够随时上手自由切换,使用最合适的工具完成当下的任务。那些面向底层的语言不在此列,比如 C++等。
Fule
2021-05-07 08:57:13 +08:00
俺家小学生学校有信息课,教简单的 Python,她人生的第一个无比疑惑的编程问题是为什么控制台里输入 “1” 和 “2” 赋值给 2 个变量, 然后 2 个变量相加得到的是 “12”

```
a = input()
b = input()
print (a + b)
```
cereschen
2021-05-07 08:58:26 +08:00
发现没有 所有反对 ts 的人都声称自己写 js 代码根本不会出现错误
所以遇到这样的情况 我们只要说楼主 nb 满足一下他那脆弱的虚荣心就可以了
Actrace
2021-05-07 09:01:12 +08:00
还是那句老话,每种编程语言,都有其适用的场景。

在我看来 ,TS 的最终目标是大型多人运动的免文档化。说白了就是你在代码里提供足够详细的说明(相当于以前倡导的注释),然后再结合 IDE,可以在调试和多人开发时获得一定的便利,这样可以降低某些场景下的开发成本(交流沟通,后期维护等)。

所以脱离场景去谈实用性其实没有意义。我个人也挺喜欢在 IDE 中编程时能获得尽可能多的自动化提示来降低心智负担,这些提示来自自动化的语法检查,函数补全等。不过如果是一些小项目,甚至是个人项目的话,似乎又没有必要为了这些特性额外增加前期开发的成本,毕竟需要到项目的后期才能看到成效。但是说不定没有后期了,写到后期结果发现要推倒重做或者又是新出了更好用的编程语言?

ps.现在其实自动补全也相当成熟了,即使不依赖 TS 也能做得很好(大家可以试试 tabnine 这个 vscode 插件,号称人工智能),所以我选择也不用 TS 。
ruyuejun
2021-05-07 09:09:46 +08:00
随便翻一个函数,不用看上下文,就知道参数类型,返回值类型,就仅仅这一点,还不够香吗?
如果没有感触,我只想说:所谓做的大项目仅仅是多个业务的堆叠而已。

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

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

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

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

© 2021 V2EX