为什么你们要选择 TypeScript?

2021-05-06 14:45:03 +08:00
 BoringTu
我只是不明白为啥这么多人会选择 ts ?理由是啥啊? ts 出来的那年我就关注了,但所有的理由在我看来都是莫名其妙的观点,但这些年怎么还用的人越来越多了?
咱就说脑回路很神奇的把本身弱类型为优势的 JavaScript,套了一层强类型的壳的这步操作我就看不懂了,这是图啥呢?这样代码写着不难受么?那你直接用 Java 写然后编译成 JavaScript 不好么?
网上有很多人说,用 ts 可以减少因类型导致的错误。大哥,你是个程序员,你连自己写的代码是怎么跑的都不知道的话,转行好吗?我十一年的程序员了,js 写了 11 年,js 的其他高级语言我也都研究过,包括 ts,但现在只用 es6 和 coffee2,我怎么就一次都没碰到过我连变量背后的值类型导致的 bug 呢?
24520 次点击
所在节点    JavaScript
303 条回复
walpurgis
2021-05-07 16:45:14 +08:00
后端接口字段类型不固定都能忍的吗
BoringTu
2021-05-07 16:47:50 +08:00
@walpurgis 不能忍啊,不过这是有历史原因的。。
一开始接口文档是我出的,但在出了 120 个接口的时候休陪产假了,出接口文档的任务就移交给后端了,等我回来之后就发现,卧槽,每个接口的字段几乎都特么 string 。。但那阵已经出了几百个接口了,而且上面还催的急,我不能忍也只能忍了,因为没时间去改文档。。
Austaras
2021-05-07 16:55:55 +08:00
我就不懂了,你这种混了十来年还在各种野鸡小公司里滚来滚去的是怎么有底气嘲讽别人过的不好的
Imindzzz
2021-05-07 17:15:09 +08:00
1 、上下游都需要 TS 支持
不需要。在 tsconfig 中配置 allowJs:true, 你就可以直接 import 一个 js 文件。

2 、接口字段类型不固定
这个两个方案,实际例子来说有个 age 字段
一是定义成 any 类型,这样就降级到 js,你原来 js 怎么做就怎么做。比较年龄时编译器不会报错,但运行时可能就报错了(出现字符串比较 '2' 大于 '11'这种情况)。
二是定义成 unknown,这样在你比较年龄时编译器会报错,需要你先写判断 if(typeof a.age ==='number'){//TODO 比较年龄},才能编译通过
-------
这个帖子的风向已经是人生攻击了,你作为题主很有必要拉回来。
-------
在我的理解中,js 换到 ts 不会有任何成本。除了一个领域到另一个领域的“几天学习成本”。
你可以提出你遇到问题,我们很乐意为你提供解决方案。
BoringTu
2021-05-07 17:22:37 +08:00
@xd199153 感谢大佬认真答疑~ 了解了~
-------
咋,我屏蔽的那货又回我了?
我争取拉回来。。不过因为话题争议确实挺大,再加上网上是人是狗啥都有,比如我屏蔽的这位,上来就喷我,我跟人家讲理,但人家不讲理啊,我就只能屏蔽了,但也只是我看不到,你们能看到吧。。
-------
好嘞,感谢大佬支持,我正在入坑中~
liuhan907
2021-05-07 17:24:55 +08:00
@BoringTu #262 你看这个不就是静态类型的优点么?
cereschen
2021-05-07 17:25:05 +08:00
我给你们总结一下
此楼主首先看现在 ts 大行其道,而自己却不会,心里有点焦虑,但是又不能偷偷的去学,这样不符合自己的性格(爱好哗众取宠)
那么思来想去,不如上 v 站开贴喷一下 ts,好处有不少:
1. ts 目前热度高 喷它可以造热点
2. 自己对 ts 一点不懂 发帖自然会有人来科普 顺便也学习了知识
3. 自己声称写 js 不出 bug 为了好找工作才学习 ts 营造一个技术大神的形象(大伙看看笑话就行)

可谓是一石三鸟 如此睿智 三个诸葛亮也抵不上楼主呀

好了 下面我来预测一下楼主接下来的行动
楼主会对指责他的人猛烈回击 甚至捏造事实
楼主会不断从好言相劝的回帖中找台阶下

大伙也得文明一点 不管观的是什么都得文明点 有些事儿 犯不上
BoringTu
2021-05-07 17:35:52 +08:00
@cereschen 哦豁,又来个心理学家,服了。。
你能说出这句话,只能证明没认真听讲,好好翻翻我都说了什么再来回我的贴吧好吗,乖~

顺便针对性的回复一下:
1. 我需要热点???我是网红?我能获得什么?也没人跟我分流量钱啊,何况流量也不高,你是咋说出这句话的。。
2. 一点不懂?核心观念跟 js 背道而驰,我本意聊的就是这件事,只不过在你看来这是优点,而在我看来这有点莫名其妙。有一说一,我这帖子有不少大佬心平气和的跟我聊技术,我在思路上确实学到了不少。但你是不是跟谁都是习惯性恶意揣测他人想法啊?厚黑学看多了还是犯罪心理学看多了?这习惯可不好,建议改正
3. 这点跟 1 一样,我需要热点?客观事实也不能说出来?我是不是再给你个调查表啊让我历届公司同事给我 bug 率一个评价整理好了给你看?你平时都是这么看人的话,那你活着是不是有点累啊。。我就是个程序员,只不过在这程序员的水里,我自认代码质量还是不错的而已

想问您还有什么想说的?
FreeEx
2021-05-07 17:56:49 +08:00
@BoringTu 我指的是 web 前端深度低,不要混淆概念。另外你举得这几个"斐波那契数列,什么阶乘,什么交集并集,什么排列组合都是要的" 这些就算得上深度了?建议刷刷 leetcode
@jeffwcx 又有几个这样的产品呢。
nameyukan
2021-05-07 17:56:57 +08:00
哈哈,有种当年在论坛里吼一嗓子「 PHP 是世界上最好的语言」的既视感了。

能干活,写啥不是写,不过确实也有点好处,也有点坏处;

好处:
1. 减少点低级错误,之前看到一些开源库里把变量名都给写错了
2. 写 ts 在用一些 API 的时候确实省脑子,vscode 会给你提示可用的 API,并且 tsdoc 也能显示出来

坏处:
1. 一层层泛型能把你看秃,还不能调试,纯看
jeffwcx
2021-05-07 18:03:36 +08:00
@FreeEx 所以说嘛,前端深度是有的,只不过现在的产品大多数都是大路货
FreeEx
2021-05-07 18:08:18 +08:00
@jeffwcx yes,前端写 ts,后端搞微服务,都是一样的套路。
BoringTu
2021-05-07 18:11:56 +08:00
@FreeEx 抱歉,我刷 codefights,但估计你没听过,而且现在也改名叫 codesignal 了
至于深度,我从两个方向来说
1. 关于我说的这几点只是举个栗子,但换句话说,你觉得前端这个锅里,有百分之多少的人会?我给你一个我的答案,我面了大概 500+的人(肯定又要有人喷了),就这些人里,有去了解数据结构和算法的,不超过 20 人,我招的岗都是中高级岗
2. 前端和后端的区别,确实是后端要深度,前端要广度,从这个角度来说,前端的深度确实没后端深。但你这是在偷换概念,这里的深度,不是知识储备深度


@nameyukan 是哒,能干活写啥不是写~
Kasumi20
2021-05-07 19:47:48 +08:00
你技术这么六,代码这么好。
怎么 Github 光秃秃的,博客也打不开?
hronro
2021-05-07 21:57:45 +08:00
@jiyinyiyong #248
与其期待 Rust 写网页的东西成熟起来,还不如期待 Nim 呢。
TonyG
2021-05-07 22:31:08 +08:00
不如直接跟你说一个你可能很难接受的理由吧,因为终于可以不用写 JavaScript 了,不管你写了多久的 js,有一点你得承认,在很长一段时间以来,js 都受到了浏览器端唯一语言的垄断保护,要是浏览器能写 Java, C#, PHP,你以为还能有 js 的事么
10bravoman24
2021-05-07 22:48:48 +08:00
java 程序员估计没有谁喜欢愿意去写 js 吧,这可能也是 ts 存在的意义。
个人观点:
1. 有利于前端生态的完善
2. 增强可维护性(主要原因)
3. 客户端代码依赖于浏览器去编译执行,使用 ts, 减少不必要的编译开销
merpyzf
2021-05-07 23:24:35 +08:00
就想问有多少人可以脱离 IDE 编程,弱类型 IDE 的代码提示太弱,经常写着写着就要去翻 api,很影响编程时的连贯性。上份工作有幸从 Android 转向前端开发写了一年的 TS,由于无法忍受同事写的 any 满天飞的代码,索性离职。对于维护性这一点,完全取决于人。
merpyzf
2021-05-07 23:27:31 +08:00
偷偷问一句,题主用 js 都是在写面向过程的代码么?
lqfxz520
2021-05-07 23:50:08 +08:00
工作以来,我都没接触过 typescript 。我没想那么多,我水平不高。我只想面向工资开发,什么技术能够给我带来竞争力我就学习她……

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

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

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

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

© 2021 V2EX