为什么你们要选择 TypeScript?

2021-05-06 14:45:03 +08:00
 BoringTu
我只是不明白为啥这么多人会选择 ts ?理由是啥啊? ts 出来的那年我就关注了,但所有的理由在我看来都是莫名其妙的观点,但这些年怎么还用的人越来越多了?
咱就说脑回路很神奇的把本身弱类型为优势的 JavaScript,套了一层强类型的壳的这步操作我就看不懂了,这是图啥呢?这样代码写着不难受么?那你直接用 Java 写然后编译成 JavaScript 不好么?
网上有很多人说,用 ts 可以减少因类型导致的错误。大哥,你是个程序员,你连自己写的代码是怎么跑的都不知道的话,转行好吗?我十一年的程序员了,js 写了 11 年,js 的其他高级语言我也都研究过,包括 ts,但现在只用 es6 和 coffee2,我怎么就一次都没碰到过我连变量背后的值类型导致的 bug 呢?
24501 次点击
所在节点    JavaScript
303 条回复
sxfscool
2021-05-07 09:10:57 +08:00
爱用啥就用啥,也不用陪着 lz 舌战群儒
cwliang
2021-05-07 09:16:29 +08:00
因为懒,编码阶段类型提示什么都有,一气呵成,都不用看控制台
zxCoder
2021-05-07 09:21:26 +08:00
我也觉得 ts 很丑,架不住它就是火。。。可能因为前端人多吧,毕竟从 js 到 ts 出现了静态类型会觉得是质的飞跃。。。。
rf99wSiT6IxH1Z23
2021-05-07 09:22:56 +08:00
因为 Angular,入坑的 ts,类型检查,智能提示,感觉很安心。

Node.js 写 web 服务,我喜欢 node.js + ts 的搭配
BoringTu
2021-05-07 09:31:44 +08:00
@christin 这么喜欢抬杠,你是杠精么?
我用 windows 的这件事是来表达你用过 OS X,而且会用之后,你就会知道什么好用了,你啥理解能力啊?而且这件事是我跟那位兄 dei 聊的,你掺和个什么劲?
你会用 coffee 或者其他 js 高级语言么?没用过的话你有什么资格跟我说这些呢?就会用一个 ts 就有底气了?而且我哪句话表达了让大家一起跟着我反对 ts 了?你如果眼睛正常的话,你应该看到我说了虽然个人认为 ts 的设计理念跟 js 是背道而驰的,但因为市场原因,不管怎样我都肯定要入 ts 的坑,所以你哪句话看到我要反对 ts 了?我还没自大到觉得我一个人可以影响整个市场的幻觉,谢谢
我之所以说我的工作年限,是用来说明这个时间段里我看到的东西,你这么自卑么?看到别人说工作年限你就受不了?莫名其妙。
tilv37
2021-05-07 09:34:17 +08:00
不是前端程序员,但也写过 ts 。
说一下我对于脚本语言“强类型”的感受,应该能说明一些和我类似人的心态。
前一阵我们接手了一个德国团队的大型 python 工程,是做 GIS 和数据计算的。德国团队只提供代码,不提供技术支持。
我们自己理解代码,调试代码那叫一个费劲啊,都不知道返回的数据是啥类型的,只能运行起来打断点了才能知晓。

当时我就和我们团队的人说,这尼玛要是个强类型语言,也许不需要调试代码了,看看、改改没准就能在中国跑了。

ts 也许同理吧
nanzm
2021-05-07 09:35:14 +08:00
一个能这么火的技术必然是解决了痛点问题,写了 js 11 年了都没去了解相关生态吗 ? 固步自封?
大团队协作,类型注释有明显好处,这个还需要争论吗?
( ps: 一次都没碰到过我连变量背后的值类型导致的 bug 呢? 写得都是小项目吧,多用用 react 写写复杂业务组件,组件库,过个一年半载重构试试,或者你就有这个痛点了)
Mirachael
2021-05-07 09:41:47 +08:00
有啥好争论的,编译出来的不都是 js 吗?
BoringTu
2021-05-07 09:47:41 +08:00
@namelosw
@Biwood
@leonlu
@james122333
@whileFalse
@Actrace
感谢各位大佬为了给我解决问题的回答~ 不像上面有些傻子跟追星一样谁说 ts 不好就一顿乱喷,特别无语


@joesonw
“自己知道怎么传参有什么用?别人知道吗?” 兄 dei,说话的时候记得稍微带着点脑子,如果真像你说的这样,js 以及其他所有弱类型语言都没有活路了?用都不能用?
你是怎么断定我没在团队里工作过,断定我没用过代码格式化,没用过 lint 的?嗯?我上面说无脑追 ts 的人就是你这样的,你这整段话我都不知道该怎么回你,你每个字都是个笑话。。


@cereschen 你要说这件事的话,我只能说在各公司里我都是全公司 bug 率最低的,目前这家公司里我曾将近一年没有 bug,最后出 bug 是因为项目催的急,测试在我们开发阶段就介入了。你说气不气?脆弱的虚荣心?你先能做到这一点再跟我说这个好吗?
你说好好聊天不好吗?非要说话这么冲然后被喷?
BoringTu
2021-05-07 09:49:28 +08:00
@tilv37 膜拜一下大佬~ 不过话说人家只提供代码不提供技术支持,这种东西能用么。。找外包还得有个项目维护期呢。。
abcbuzhiming
2021-05-07 09:54:18 +08:00
楼主的这个疑问,在知乎有几个很经典的问题可以回答:
“为什么 2010 年前后诞生的语言(如 Golang, Rust, Swift)都是强类型 + 静态”
“在大型项目上,Python 是个烂语言吗”,
“在大型项目上,JavaScript 是个烂语言吗”


总结的说,第一代动态语言,仅仅是人类希望获得类型推导时进行的一次尝试,但是很明显,这个尝试失败,没有类型约束的系统天生不适合协作。它带来了额外的心智负担。


楼主说自己写了 11 年,还是认为 js 的动态类型是优势,并觉得自己绝不会在过于灵活的动态系统面前出错,首先我承认,楼主应该是记忆力非常超群的那种人,其次呢,我基本可以肯定,楼主很少和人协作,计算协作估计也是和自己水平差不多的人协作,所以意识不到问题在哪里。


但是我仍然要说,所谓现代软件工程存在的意义,就是把一群实力其实一般的人,拉到一起写代码的。换句话说,楼主这样的人虽然优秀,但是稀少,但是再优秀的人,它的工作时间也就那么多,仍然有大量的代码,必须由不那么优秀的人完成。
当你必须考虑让不那么优秀的人一起协作的时候,你就会意识到过于灵活的类型系统是缺陷了。


楼主写了 11 年,还是停留在“我很优秀,我身边的人也很优秀,所以我不需要约束,不需要严格的类型系统限制我的工作”这个思考层次,其实已经有点滞后了,真诚的建议楼主,跳出技术圈子的约束。
理解电脑不过是工具,信息化的过程本质就是让更多的“傻瓜”也能参与和使用算力的过程。


计算机的世界需要大神,但是计算机发展的历史进程是拉入更多的普通人,作为大神,应该顺应这个历史进程,而不是仗着自己的头脑先天有优势,挡在历史车论前面当螳螂
tilv37
2021-05-07 09:58:58 +08:00
@BoringTu 外企在国内应该有相当一部分公司工作模式就是我们这种。中国公司和国外公司理论上是一家公司,但实际上是各自独立结算的。
所以我们可以共享部分资源,但是如果要别人提供服务,是要额外付费的

恰好我们接手的项目,只支付了基础咨询费用,也就是给我们讲讲这个产品在德国是干啥的,怎么考虑和设计的。
但不提供细节指导
Obrigado0815
2021-05-07 10:02:00 +08:00
@zjsxwc 我第一次接触 ts,也是因为写 ng
BoringTu
2021-05-07 10:02:13 +08:00
我说说从昨天到今天这半天时间结合目前两层楼的各位大佬的回复,以及自己的研究,对 ts 的感受吧

1. 各有所长。与其他 js 高级语言相比各有所长,比如我喜欢 coffee,是因为简洁,而且也能大幅避免很多常见低级错误,重点是保留了 js 的几乎所有优点,其中就包括弱类型这个特性。ts 是反其道行之的产物,但存在即合理,我也接受了 ts 的存在并且正在入坑中,但就像我之前说的,只是因为市场关系。如果说优点,ts 当然肯定是有优点的,我认真看了两层楼所有大佬描述的 ts 的优点,以及自己也网上看了官方文档和网上其他大佬对 ts 的推销文章,不过这些优点对我没什么太大帮助。
1. 益于团队。这点我承认,尤其是在团队成员能力差距较大的前提下。这点来说,coffee 相对弱势,但差距并不是很大。各位不得不承认 ts 的突然崛起,跟国内所谓大厂的推销是分不开的。我这两层楼里一样有很多人是跟我一样的,对 ts 并不怎么感冒,但毕竟市场原因,所以入坑。
3. 追星?为啥咱程序员的行业会有一些人对 ts 有盲目追星的情况出现。。我的天,真吓人。说一句 ts 不好,啥都骂,恨不得打车过来揍我,我怕了,真的~ ts 万岁!放过我。。
Shook
2021-05-07 10:06:23 +08:00
我自己也觉得 JS 弱类型舒服,但多人协作不可避免会遇到 lint 限制不到的代码风格差异、水平差异等问题。

用你的话来说:如果你觉得 TypeScript 没必要,我给你的答复是,最起码截止目前来说,你还不会用 TypeScript 。
breestealth
2021-05-07 10:09:52 +08:00
@rioshikelong121 忍不住为您点了个赞👍
BoringTu
2021-05-07 10:12:14 +08:00
@abcbuzhiming 感谢大佬中肯的回答,我了解了。。
虽然接下来说的有点凑不要脸,但确实是事实,我面试的话,我觉得不行的就直接 pass 了,新手我是不招的,除非我觉得思维能力很好很有天赋的那种。从新手开始让我带出师的不多,只有三个。所以工作中很少碰到能力较差的。不过前一阵因为项目赶进度,项目中一个模块找的外包团队来做的,我脾气也确实不太好,前期一天能骂他们八遍(当然,不是有脏字的那种。。),我都快把代码贴他们脸上了,人家每次都是好的,然后该咋写还咋写,bug 堆 bug 那种,然后他们延期了一个月,一直不是在修 bug,就是在修 bug 的路上。。emmmm,跑题了~ 不过我其实是想说,就算是上了 ts,像这种没什么天赋的选手一样是写出一堆辣鸡没法用的,如果仅仅是维护就还好,如果需求有稍微大一点的变化,他们的代码是没法继续用的,只能推倒重新写。我真的不信上了 ts 就不会发生这种问题。但 ts 在团队合作中的优势我是承认的,但并没有宣扬的那么大而已
BoringTu
2021-05-07 10:16:11 +08:00
@Shook 是的,不过正在入坑中
qiumaoyuan
2021-05-07 10:27:58 +08:00
@abcbuzhiming 哈哈哈
shunia
2021-05-07 10:33:25 +08:00
这居然也能上热一,这是真的水深火热。

“因为我只用过 Java 、JavaScript 、Coffee,所以我不知道为什么这么多人选择 ts”
你要么就用用试试,要么就自己去选择,有什么所谓?

另外写了十一年还要问出这个问题,我觉得不太合理,你应该直接就没疑问,JavaScript 继续从一而终。

另外纠正一个说法,没有所谓的“js 的其他高级语言”,我理解都是转译而已。

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

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

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

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

© 2021 V2EX