为什么你们要选择 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 条回复
tmac33
2021-05-06 18:13:44 +08:00
同样想不通,这真是一种倒退,怪就怪同行衬托
lbyo
2021-05-06 18:14:14 +08:00
@xd199153 #99 补充一点,配合 VS Code 使用的话,变量重命名也变得简单,选中变量 => 右键 => Rename Symbol 就可以了,省去了搜索、匹配、替换的功夫了
jeffwcx
2021-05-06 18:15:11 +08:00
@BoringTu 我估计你 ts 用熟练后之后就会像熟悉 macOS 之后吐槽 windows 一样😂
jeffwcx
2021-05-06 18:17:23 +08:00
@yohole 额呵呵,要是后端也能随随便便搞定前端,那我们专业前端就没饭吃了🤪
jeffwcx
2021-05-06 18:18:35 +08:00
@xd199153 你说的 npm 网络问题,其实挂 vpn 更好
gzf6
2021-05-06 18:19:41 +08:00
主要是因为不是所有人都和你水平一样高
littlemcdull
2021-05-06 18:21:36 +08:00
@BoringTu 已 block,感谢 block 功能
CodingNaux
2021-05-06 18:24:41 +08:00
1. ide 提示增强,提升效率
2. 重构方便,类型写的好一改全改,js 的话引用分散在多个文件你得全局搜索吧
3.方便阅读代码,别过一段时间,又得重头看代码,看 api 返回,理清数据结构
namelosw
2021-05-06 18:41:06 +08:00
我说说我自己的感受:

> 但现在只用 es6 和 coffee2

用 TypeScript 不用 JavaScript 的原因:因为补全的原因写得比 JavaScript 快

> 那你直接用 Java 写然后编译成 JavaScript 不好么?

用 TypeScript 不用 Java 的原因:很多概念上很容易表达的东西 Java 都写不出来,只能糊设计模式

而且 Java 根本没有靠谱的 transpiler,编译出来巨大,配置起来也麻烦,大部分语言情况都差不多,除了 Elm 之类专门 target JavaScript 环境的。

总得来说就是富有表现力的静态类型语言,设计得别太复杂,其实都很好用。Java 没有表现力,JavaScript 不是静态类型。
Biwood
2021-05-06 18:43:14 +08:00
大概是 2015 年就有大佬向我推荐 TypeScript,但是我一直没兴趣,直到后来开始用 VSCode 。以及,最重要的,当你接手了一个数据交互超级复杂的项目,而这个项目经手的人又多,命名不规范,你想追踪数据的流向时,发现一团乱麻的时候,如果用 TS 就能解决很多问题。
另外,TypeScript 继承了 C#的血统,有兴趣的话可以了解一下什么是优秀的语言设计,C#的设计比较学院派,虽然看起来啰嗦,但是可以培养良好的编程习惯。你前面提到了 CoffeeScript,我没记错的话,它是借鉴了 Python 的风格,比本身就是动态语言的 JavaScript 更加简洁,跟 C#完全是往相反的方向走。简而言之,如果你追求代码质量希望减少出错率就选 TypeScript,如果你追求效率和简洁就选 CoffeeScript 。
leonlu
2021-05-06 19:02:48 +08:00
给几个 ts 好用的例子,供楼主参考:
1. 有了 ts,你基本可以大大降低对 API 文档依赖程度。以往像 lodash / ant-design 你要一直打开个文档去看 API 参数的。有了 ts 之后,看看 ts 定义,基本也差不多。但事实上这能带来非常大的开发效率提升!

2. 更进一步,ts 还能减少前后端接口联调成本:如果后端接口用 thrift / protobuf / swagger / openapi 等等 idl 协议制定的,那么可直接从 idl 转成一个 ts 的 library 。你调后端接口的时候,少一个参数,直接在 vscode 里就给你提示了:不行。这个有时候甚至要比后端同学给提供一个联调环境还要靠谱。

3. JS 项目非常常见的一个 case:一个 options,从最顶层一路向下传递很多层。传的过程中还有可能出现有的地方是加一些,有的减少一些。你看到这个 options 的时候很无力,你要向上翻无数层才能找到这个东西的结构。脑容量有限,装这些东西它就不划算。

4. 团队需要规范,而 ts 能提供更多、更细致的约束。很多水友都提了,我就不展开了。

5. 对于前端个人成长有收益。并不是所有的前端同学都是科班出身,一路从 C/C++/Java 学过到到 js 的。多学一点,没啥不好。

总的来说,对于单人(前端)的开发效率有提升,对于团队的效率有成倍提升。所以,如果我是前端团队的 leader,我会选择上车。

当然凡事皆有两面,ts 的接入也是有成本的。业务足够简单,没几行脚本的,确实也没这个必要。
Jirajine
2021-05-06 19:15:13 +08:00
觉得静态类型没有存在价值,要么就是你太菜,没写过多于一个文件项目的脚本小子;要么就是你太 nb 了,徒手撸高达,于是觉得别人用数控机床没意义。
tanwill12138
2021-05-06 19:35:57 +08:00
吃瓜 dog
liuw666
2021-05-06 19:36:10 +08:00
自动提示
Justfakemoz
2021-05-06 20:18:05 +08:00
@BoringTu
"我只是不明白为啥这么多人会选择 ts ?理由是啥啊?"
"不过不管咋说,就算因为市场原因,就算 ts 没什么优点,我肯定也得入 ts 的坑,毕竟要养家糊口。。"

???自言自语?
"以你这种逻辑思维,你是怎么当的程序员?工作不如意来网络上找存在感来了?"
slert
2021-05-06 20:23:48 +08:00
不排除很多人仅仅是因为 ts 流行而选择它
ruoxie
2021-05-06 20:32:48 +08:00
我也说不出理由,反正现在切换到非 ts 得项目,感受就是难受,效率低。你可以自己上手写一段时间
heganj
2021-05-06 20:50:22 +08:00
Quick and dirty 流派握手
fy
2021-05-06 20:56:09 +08:00
因为好用。说实话出来那两年 TS 很菜,当年我也看过然后骂骂咧咧走了,后来今非昔比
xarthur
2021-05-06 21:07:52 +08:00
@BoringTu 火说明很多人爱用,而且切实的解决了问题。
不过看你发言你也不想知道解决了什么问题。
所以「不爱用就不要用呗」(

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

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

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

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

© 2021 V2EX