为什么你们要选择 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 条回复
Jirajine
2021-05-06 16:50:21 +08:00
@x940727 别的不多说,Java 连个 sum type 都没有,就知道继承,OO 毒瘤。
zjsxwc
2021-05-06 16:52:55 +08:00
强类型照样写出屎山。

我喜欢 typescript 的原因是 angular,是全套的生态,全套的服务!
zhangshine
2021-05-06 16:54:28 +08:00
用了都说好,尤其是重构的时候🤣
blindie
2021-05-06 16:55:16 +08:00
@BoringTu Typescript 能解放你的心智负担。
举个例子在全新的项目里需要你重构一个函数的实现,typescript 下你可以直接改这个函数体,因为传参和返回的类型都已经约束好了。而 js 下你要么拍脑子想一想,要么得用 BFS 来 traverse 整个 code base 搞清楚每个调用方的使用方式。一个 O(1),一个 O(code base),能一样吗。
以及你 #59 说“你用第三方库不看文档直接打点就用??”,npm install @types/xxx 对应版本或者自带 d.ts 的库就是不需要看文档直接打点就用。

而以上只是用 Typescript 带来生产力起飞的能力中的两点而已。
chengdonghui
2021-05-06 16:57:19 +08:00
typescript 的优点是它的类型推导系统,但是以下情况下,优点并不适用:
1 项目规模较小时,用不用强类型,关系不大
2 开发团队人员比较少时,大家直接交流了,也不需要强类型来约束
Leviathann
2021-05-06 16:57:22 +08:00
@x940727 类型和对象是两个东西,这些复杂的类型多出自函数式编程语言。
比如你用 java 想表达一个变量只能是两种类型中的一个如何表达?就算要强行表达也得写一堆样板代码
yohole
2021-05-06 17:08:51 +08:00
跑个题,到底在座各位有多少人目前工作上是真正意义上的 [大型] 和 [需要多人协作] 的前端项目?不会人均 BAT 吧?
不会又是 讨论的时候造火箭,工作的时候其实在拧螺丝吧?
zhaol
2021-05-06 17:13:57 +08:00
实在不行所有类型你都约束个 any,就跟写 js 一样.
OxOzZ
2021-05-06 17:15:10 +08:00
你自己心里答案都这么明确了还发帖子问鸡毛呢
kop1989
2021-05-06 17:16:20 +08:00
@jeffwcx #72 这里不是说正确与否,经营自己的 GitHub,包括 LeetCode 肯定是对自己能力有帮助的,这个毋庸置疑。但问题在于这个风气给程序员这个职业引入了非工作内容的压力和门槛。

假设这么一个场景:你希望你的员工是一个刻苦( 996 )懂算法(能手撕 hard ),乐于学习( gitHub 经常更新、维护)的人。
但你又不希望你招来的员工在上班时间划水。

那么问题就来了,这员工的开源项目和算法经验从何而来呢?说白了,你即希望员工在上家公司划水刷题,又不希望员工在自己的公司划水刷题,招聘的时候还要求员工要有刷题经验,这不是典型的“又当又立”么?

话说回来,还是那帮“互联网头部”固步自封的结果。我用的,别人也得用,我走的老路,别人也得走,否则就不带你玩。
lewinlan
2021-05-06 17:16:23 +08:00
不好意思,我还真不知道自己写的 python 是怎么跑起来的(手动滑稽
三个月前写的代码我都不知道他是怎么跑起来的,更别说是别人写的了。
另外您还没准确区分强类型和静态类型,这可能与您的年限不太匹配……
momocraft
2021-05-06 17:17:30 +08:00
智力不够写 JS 只能靠 TS 的提示写代码糊口
Imindzzz
2021-05-06 17:19:00 +08:00
@yohole 看你是怎么定义的呢,2 个人合作也是多人合作。

话说回来了,哪怕自己一个人写代码,引入 ts 也没啥坏处嘛。但是不用 ts,在不可预见的未来可能就麻烦了。

看道理说工具链有问题,欢迎说出来交流交流。
hyrious
2021-05-06 17:19:29 +08:00
感觉现代编程语言加个类型检查是趋势
随便说几句
1. ts 不是强类型,甚至不是 js 的超集:例如 func<1,2>(3)
2. ts 不强制要求你的类型能完美推导:随时可以用 as 和 any 逃课。
3. 编程时的信息量越多,解决问题的效率越高
jeffwcx
2021-05-06 17:19:35 +08:00
@kop1989 害,这也没办法,大部分面试官看到别人的面试经验好用也就用起来了
JerryCha
2021-05-06 17:24:59 +08:00
懂了,楼主是顶顶级 geek 。
LiubaiQ
2021-05-06 17:27:11 +08:00
敢问大哥项目规模多大,我司 react 项目,几十万行。。。如果没有 ts 。。。

另外,我发现的一点,因为很多人图省事儿,写的东西都定义成 any,倒是跟 js 没区别了,处理个问题,本来代码一路点过去都没啥问题,到 any 就尴尬了,还要浪费时间去看这个`any`是啥东西,代码少没问题,代码多呢?

维护成本大幅降低,开发成本小幅增加。
Yuchen
2021-05-06 17:29:12 +08:00
楼主记忆力太好了吧,反正我是记不住自己的代码是怎么跑起来的 www
yohole
2021-05-06 17:32:23 +08:00
@xd199153 我是搞后端的,有时候使用一些开源系统或者弄一些小页面的时候需要用到 ts 、vue 之类的,照葫芦画瓢修修改改其实还过得去,但是遇到过好几次揪心的事情全都是前端工程其本身以及 Node.js 工具链(庞大的依赖、网络、各种复杂的配置)导致的,这个对于有后端经验的新手来说都差点直接劝退了,其他的 0 基础的前端应该更难吧
wangsyi13
2021-05-06 17:33:09 +08:00
工作了 11 年不一定有 11 年的经验

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

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

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

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

© 2021 V2EX