为什么你们要选择 TypeScript?

2021-05-06 14:45:03 +08:00
 BoringTu
我只是不明白为啥这么多人会选择 ts ?理由是啥啊? ts 出来的那年我就关注了,但所有的理由在我看来都是莫名其妙的观点,但这些年怎么还用的人越来越多了?
咱就说脑回路很神奇的把本身弱类型为优势的 JavaScript,套了一层强类型的壳的这步操作我就看不懂了,这是图啥呢?这样代码写着不难受么?那你直接用 Java 写然后编译成 JavaScript 不好么?
网上有很多人说,用 ts 可以减少因类型导致的错误。大哥,你是个程序员,你连自己写的代码是怎么跑的都不知道的话,转行好吗?我十一年的程序员了,js 写了 11 年,js 的其他高级语言我也都研究过,包括 ts,但现在只用 es6 和 coffee2,我怎么就一次都没碰到过我连变量背后的值类型导致的 bug 呢?
24472 次点击
所在节点    JavaScript
303 条回复
IvanLi127
2021-05-06 16:12:21 +08:00
“大哥,你是个程序员,你连自己写的代码是怎么跑的都不知道的话,转行好吗?”
JoStar
2021-05-06 16:13:18 +08:00
也许是楼主真的太强了,不需要强类型语言带来的优点。

但是这么强的程序员并不主流,所以大家都用 ts 了。
IvanLi127
2021-05-06 16:13:44 +08:00
@IvanLi127 多人协作的话还得知道别人写的代码怎么跑的。(换行不小心发出去了。。。。)
BoringTu
2021-05-06 16:14:07 +08:00
@g00001 兄 dei,你不了解 windows 的历史?为啥会占领大部分市场的原因你不清楚?
是因为好用吗?哥们,是因为捆绑,是因为盗版,是因为思维惯性,但真跟好用扯不上关系
powerfulyang
2021-05-06 16:14:08 +08:00
这不就是典型的不喜欢就毁灭?
Imindzzz
2021-05-06 16:14:38 +08:00
你有一个大前提就是“js 的弱类型是优势”,

说来说去都是在讨论“类型有啥用” ,你可以有自己的实际场景和理解,但是从评论中你也看出来了,大家都更喜欢强类型。约束自己也约束团队。

@hronro 说的问题,你说可以通过培训和 review 来解决。
是,人肉解决是可以,但是编译器就能解决的事,为什么要去浪费时间人肉做呢。

review 代码的时间用找 bug 吗,用来交流编程技巧不好吗。

----

说到这里我问一句题外话,你用团队有使用 CI/CD?
jeffwcx
2021-05-06 16:22:02 +08:00
@zzlatan 起码比 jQuery 时代好多了,我也是从 jQuery 时代走过来的,我所看到的是前端工程化程度越来越高(更多人能开发复杂项目,参与多人协作项目更简单),能做的东西越来越多,可以搞后端,可以搞 RN,这意味着职业天花板上升了。所以尽管前端领域发展过程中有浮躁,但并不是瞎折腾,一个明显的例子就是 react 的 jsx 写法已经深刻影响了移动开发领域,swiftui,jetpack compose
h82258652
2021-05-06 16:24:59 +08:00
没学过 coffee
ts 类型对大型项目有很大好处的,小项目确实不如 js 开箱即用爽
不知道楼主听过这么一句话没有:动态类型一时爽,代码重构火葬场

let a = 1;
let b = "1";
let c = a + b;
像这种 js 直接就给你跑上去了,但事实上这样的代码报错才是应该的,类型不一致就不应该相加

至于 ts 的语法糖,那些都是其次的了
chanchan
2021-05-06 16:25:53 +08:00
错的是这个世界!
jeffwcx
2021-05-06 16:29:07 +08:00
@h82258652 ts 好像没有啥语法糖,都是 es 的语法糖,其实就是类型系统
lingo
2021-05-06 16:32:43 +08:00
变相迫使个人在开发的时候付出更多的精力,写出隐藏在代码里的文档,从而降低整个团队的成本。
就像弱类型,可以有各种方便的用法,或者写出骚气的代码,可以是优点,你也觉得是有点,但是爽了自己,别人接手的时候就难受了。
代码写的灵活,对个人是好事,对团队不一定。
LeeReamond
2021-05-06 16:34:30 +08:00
大概本质还是因为前端程序员的水平差距像海一样深吧。。es6 之后,在良好的编码规范和良好的注释下其实可以达到 ts 相同效果(由于没到语言级别规范,IDE 补全方面会有缺失,不过总体而言堪用)。但实际项目中很难要求前端程序员严格遵守这些规则,由此产生了屎山。
yhxx
2021-05-06 16:34:55 +08:00
我觉得 TS 带来的最大提升是代码提示
至于什么减少因类型导致的错误。。。
dqzcwxb
2021-05-06 16:36:32 +08:00
3dwelcome
2021-05-06 16:37:55 +08:00
@BoringTu "兄 dei,你不了解 windows 的历史?为啥会占领大部分市场的原因你不清楚?
是因为好用吗?哥们,是因为捆绑,是因为盗版,是因为思维惯性,但真跟好用扯不上关系"

我去 google 了一下 windows 市场占比

個人電腦作業系統市占率統計
82.96% Windows
12.49% macOS
1.72% Linux
0.51% Chrome OS

这不仅仅是历史原因,macOS 出道也很早,可就是 Windows 软件开发更方便。
这就是 TS 主流一个道理,你自己一个人觉得 WINDOWS 不好用这不重要,关键大家觉得 Windows/TS 好用。
g00001
2021-05-06 16:38:43 +08:00
别人用 Windows 是因为觉得用 Windows 浑身难受?
别人盗版 Windows 是因为盗版 Windows 浑身难受?
别人用 Windows 是因为不了解 Windows ?
Windows 占领桌面市场最大份额是因为 …… 是因为 …… 是因为 ……
大概明白你为什么反感 TypeScript 了,

对了,
即然你因为孩子忙到没时间用 Windows 娱乐( 浑身难受 ),
怎么有时间上 V2 忙活一天不去多陪陪孩子。
rioshikelong121
2021-05-06 16:39:39 +08:00
看着像是一个工作了十一年的一年经验程序员。
x940727
2021-05-06 16:43:21 +08:00
@Leviathann 这些东西设计的这么复杂是因为 JavaScript 的问题,实际上这么复杂的类型系统会带来更复杂的编程问题啊……如果按照你说的这些东西,别的语言甚至连对象都创建不出来,JavaScript 可以,所以 typescript 才需要这么复杂的类型系统……
Imindzzz
2021-05-06 16:44:43 +08:00
https://github.com/boringtu/srsdk/blob/master/src/thr-sdk.coffee

wx.getBLEDeviceCharacteristics

就比如你这段代码,你是直接记的拼写?还是直接去文档复制?

有 ts 的话,就可以只敲一个 wx.getB 就代码补全了。
然后要什么参数直接按住 ctrl 点击函数名进去看定义。
justin2018
2021-05-06 16:48:04 +08:00
js 100 个人有 100 中写法 滑稽 😁

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

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

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

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

© 2021 V2EX