前端同学,你到现在还没用 typescript 原因是什么?

2021-07-28 10:36:16 +08:00
 Imindzzz

我认为使用 ts 是只有好处没有坏处的。因为实在没办法的时候也是可以降级到原生 js 的写法的,但是熟悉 ts 后那真是太爽了。

如果你有什么问题可以说出来,看大伙能不能给你一个完美的解决方案。

大家心平气和不要吵架。

13490 次点击
所在节点    TypeScript
124 条回复
yazinnnn
2021-07-29 08:56:04 +08:00
不是,为什么你们黑 ts 的时候总要嘴一句 java?
难道 ts 不是跟 c# kotlin swift 更像吗?
mikulch
2021-07-29 08:58:37 +08:00
@fanym 兄弟话说到点子上了,归根结底 js 是真的垃圾。
Geo200
2021-07-29 09:00:42 +08:00
如果浏览器能直接运行 ts 可以考虑下
xujiahui
2021-07-29 09:06:30 +08:00
你们不会碰到封装别人已经写好的库的情况吗,那个时候在别人的对象上加属性是真的恶心,比如 AxiosRequestConfig 加点自定义属性,强行搞个文件声明模块和接口
Imindzzz
2021-07-29 09:11:35 +08:00
@popil1987 我没理解你这个思路,如果你用的都 ts 的组件,那为啥不顺手让“小组件”也用上 ts 。
所谓的“没必要”本质还是觉的“有成本”,在一个 ts 的大框架下,让小组件也用 ts 需要多少成本?
lvming6816077
2021-07-29 09:12:28 +08:00
如果 Node.js 写后端可以考虑用 ts,浏览器端什么时候原生支持了再用,现在就算了
Imindzzz
2021-07-29 09:15:39 +08:00
@yazinnnn 哈哈哈。可能他们对一切强类型静态类型的语言言都抵触吧,java 最流行就说 java 了。
我写过几年 java,还是蛮喜欢的。
Imindzzz
2021-07-29 09:29:48 +08:00
@mikulch 没太明白你说的“点子上”是什么意思。我们标题已经限定在前端了,要说都是垃圾的话,那前端不干了哦。

我是前端->必须在浏览器里用 js->js 辣鸡->我用 ts 。
如果你能搞出替代 ts 的更好的方案,大伙也不会拒绝的。
Imindzzz
2021-07-29 09:31:45 +08:00
@xujiahui 这个情况是极少数的
我们要先达成一个共识“按着他定义的规范写,是更标准的”。
然后如果你实在赶工,直接 as any,先把功能做了,回头再来优化,没啥不可以的。
leonlu
2021-07-29 09:38:39 +08:00
不写 ts 是因为在写 dart…
Imindzzz
2021-07-29 09:38:56 +08:00
@lvming6816077
@Geo200
@Rrrrrr
浏览器原生支持多半是不可能的,不过你们为什么需要这样呢,可不可以说一个实际引用场景?
现在都是构建工具一把梭,有 sourcemap,调试和 js 完全没差别呀。
zxCoder
2021-07-29 09:40:19 +08:00
@xd199153 我个人认为 ts 实际上更适合后端,就是 node.js 那一套,前端的话连浏览器能不能原生支持,算什么前端呢
murmur
2021-07-29 09:47:34 +08:00
@xd199153 别提了,chrome 的 sourcemap 跟弱 x 一样,多少年没解决,一打断点整个函数全亮了,必须用 debugger 才能停住,热更的越多 sourcemap 越没法用。。。

更何况我们要做 IE 测试
ibegyourpardon
2021-07-29 09:57:02 +08:00
ts 不是只有好处没有坏处的。

一个是很多人提到的场景问题,前端开发中会存在着大量的月抛甚至周抛型任务,但这类任务中又有相当一部分需要从头开始开发,本身也不复杂,使用弱类型语言一把出货,又快又好,这种情况下上 ts 反而是徒增心智负担。

第二个,原因,是我个人感受。不知道有没有人和我持类似的想法,但这个可能没法解决。ts 里有一些优秀的特性我觉得应该是进入 js 里面去的,但 js 既然保证了对历史版本的兼容,意味着基本做不到了。ts 永远只能是一个方言的形式存在。
最后跑起来的还是 js,意味着,ts 是一个从开发层面实现了更友好支持的方言,但最终跑起来的运行时优化,是和 ts 本身没多大关系的。
这很像 python 里现在的类型提示,很大程度上可以借助 IDE 或者某些类库实现友好的提示,帮你写出更好的代码,但跑起来后还是一套动态一起上。
而真正的强类型,编译语言,是可以在运行时上做到针对性的优化的。这事,注定是 ts 的短板。

所以 ts 的场景,我们可以大概认为,它应该是主要面向开发这层做优化,更方便协作,能写出更工程化的东西。
但这样的事,我更觉得,应该让原生 js 增加这些 feature 才对。

ts 应该进入 js 。

但回头看看 js 这边的一些新提案,再看看 python 那边花里胡哨的一些提案……唔,感觉官方们都还集中在语言本身的 feature 改动上,而对工程化的支持,似乎都是社区在自行推进周边的支持。

目前看来最舒服的居然是 go …… 不挑刺,我知道 go 的问题和不爽,但总的来说,在工程化,效率,性能,语法上,我觉得当前阶段是一个蛮舒服的结合点的。
Imindzzz
2021-07-29 10:06:56 +08:00
@murmur chrome 这个问题确实,不过 js 也是要 babel 构建的(没啥项目先),一样调试不好打断点。期待有大牛能把这个问题解决吧。
这个我一般是 能打就打,不能打就 console ebugger 混着用。
Imindzzz
2021-07-29 10:07:50 +08:00
@murmur 不过 js 也是要 babel 构建的(没啥项目现在是直接新建个文件夹就开干吧)
TomatoYuyuko
2021-07-29 10:11:00 +08:00
独立开发,转 ts 之后做了 2 个项目,没觉得效率提升了,也没觉得 bug 少了,就这样
Highlights
2021-07-29 10:13:36 +08:00
成本可不仅仅是学习成本,ts 写完的项目如果后面的人维护,这不懂那不懂,天天拉着你问就恶心人了。
theprimone
2021-07-29 10:15:20 +08:00
不用 TS 不会写代码了。。。
fanym
2021-07-29 10:17:53 +08:00
@Highlights 维护 js 代码不是更不懂,代码定义在哪使用在哪都不好找。动态类型写起来容易出 bug,代码也不好看懂。

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

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

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

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

© 2021 V2EX