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

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

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

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

大家心平气和不要吵架。

13481 次点击
所在节点    TypeScript
124 条回复
jin5354
2021-07-28 17:33:05 +08:00
@powerN

1. 什么时候用枚举什么时候用联合类型
如果值是弱语意的,比如 status 是 0 1 代表上线 /下线,那么通过枚举 Status.ON 和 Status.OFF 可以补充语意,写的时候就一目了然,这时适合用联合类型;另外如果要修改值只需改 enum 一处就好,其他地方是引用的;联合类型你得改各个地方。强语义的字段我基本都写联合类型,省事儿;如果要重点考虑维护(如前文场景),就用枚举。你这个 Direction 的例子我就用联合了。

2. 枚举 /联合类型转换到对象:用 Record 工具类型,type List = Record<Direction , Direction>,但这里如果按你要求 left 只能对 'left' 的话就不能写 Record 要用底层的 in
type List = {
[key in Direction]: key
};
ipwx
2021-07-28 17:36:02 +08:00
可是 webstorm + js + vue.js 的体验很好啊。

甚至可以识别 vuex 的 state,在代码提示里面正确给出属性。
um1ng
2021-07-28 17:48:38 +08:00
目前是在用了 项目都是用纯 ts 写的,顶多页面部分用了一些框架...
jin5354
2021-07-28 17:49:20 +08:00
TypeScrpit 毋庸置疑是好文明,但目前确实学习路线蛮陡峭的,最适合在工具库里写,结合 React 变难一点,比如你得搞清楚在状态管理时,注入 store 时怎么表述组件 props,挺 hack 的,结合 Vue 更难。

只有付出相当的成本才能做到流畅的写 ts,像我即使重度写了 1 年多也还有很多场景不知咋写比较好,一是因为 ts 文档真的枯燥,只有实际用到才会去找,还有很多小技巧你得去 stackoverflow 才能搜到,二是 ts 自己也不够智能,有的场景它就是推断不出,你只能忍,换个写法。三是我自己也是水货,只想赶紧写完下班。

最近社招时想问几个 ts 的问题,实际情况 90% 没写过 ts,5% 只能写写 interface,能知道泛型、工具类型的都没有,更别提什么 extends,infer 这种了,可见 ts 的普及程度(公司太拉,吸引不到大佬也是一方面原因
zxCoder
2021-07-28 17:58:36 +08:00
要我说,ts 纯属脱裤子放屁。。。
zxCoder
2021-07-28 17:59:07 +08:00
也就是因为前端那些生态绑定了 js ts,才能火起来
fanym
2021-07-28 18:10:34 +08:00
非前端,但是 js,ts 都是恶心货,可以的话真不想碰这些语言。
silencelixing
2021-07-28 18:14:20 +08:00
因为没学,JS 又不是不能用,我把这时间用来摸鱼他不香吗?
说白了就是投入产出比不够好,学习也是成本。
leelz
2021-07-28 18:34:39 +08:00
写类型的成本就是成本,需求倒排工期哪有时间去写 type,就直接 anyscript 省事
lemonnTr
2021-07-28 19:14:59 +08:00
@Kmmoonlight 是装饰器那种写法吗 体验不是很好
Kmmoonlight
2021-07-28 19:16:53 +08:00
@lemonnTr 你说 计算属性 watch 之类的么, 感觉也还好, 这种主要看用的人的, 要是不自觉都会变成 AnyScript
94qihang
2021-07-28 19:23:34 +08:00
TS 很好用,但终究还是输给了“项目时间紧”,“团队没有规范”(别人 anyscript,你自己写 TS )等等的现实。
musi
2021-07-28 19:55:27 +08:00
“只有好处没有坏处”
团队的技术栈选择不是你一个人说了算,其他人的上手成本也是成本,用不好变成 anyscript 还不如不用
如果你的团队只有你一个人,那你开心就好
musi
2021-07-28 19:58:46 +08:00
如果只是为了类型提示的话,那向 webstorm 之类的 IDE 只要写了注释也会有类型提示。这并不能成为用 ts 的理由。说到底软件开发就没有银弹。
Kaciras
2021-07-28 20:56:27 +08:00
多少年了对 ESModule 的支持还没搞定,import 不能自动加扩展名,生成的文件也不能自定义 .mjs 扩展名。

DefinitelyTyped 永远落后,不自带类型文件的库没法第一时间升级。

不支持扩展,到现在只有个 JSX 语法,导致一堆自定义模板的库没法兼容,尤雨溪也吐槽过这问题。

TS 的 JavaScript API 一直没有稳定下来,也没有文档。
ryanlid
2021-07-28 21:16:42 +08:00
因为同事还不会 JavaScript
mokevip
2021-07-28 21:22:53 +08:00
前公司各种新技术各种 high,听说以前 high 过的项目全靠几个老员工撑着,因为新来的压根没听过 Typescript
iszengmh
2021-07-28 22:01:15 +08:00
正在写 IE
nanxiaobei
2021-07-28 22:01:36 +08:00
写出来的代码太丑了
Cbdy
2021-07-28 22:12:02 +08:00
应为我们还在用 Vue2

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

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

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

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

© 2021 V2EX