真的有人在项目中进行 TS 类型体操吗?

2022-04-20 17:28:40 +08:00
 waiterlin989898

因为发现自己的 TS 一直是半桶水的水平,所以想通过看一些开源的项目,看看有没有好借鉴的代码,但在 github 上翻了几个 TS 的项目,发现基本上都是 70%的正常的 JS 书写,即使有,也基本没有全面覆盖类型推断,而 TS 类型体操更是寥寥无几,但关于 TS 的话题,在前端却异常的火爆。可能是我查询的项目有问题,有没有 V 友能提供几个相关 TS 覆盖率比较全的项目,十分感谢。

7493 次点击
所在节点    程序员
49 条回复
Rocketer
2022-04-20 22:57:18 +08:00
@Loserzhu Java 转过来的人一般喜欢 TS ,就是因为它更像 Java ,写着舒服。但他们也不会因此而去研究 TS 的特性,像写 Java 一样写 TS 才是他们想要的,也是 TS 的最大价值所在。

前端圈之所以讨论热烈,是因为 type 对他们来说是个新鲜事物,既麻烦又有用,难免会争论。但后端谁会有兴趣讨论这低一档的玩意?

但你这个做法是在考别人 TS 特有的东西,舍本逐末了。
enchilada2020
2022-04-20 23:07:25 +08:00
@Leviathann 这个在知乎上也看到过相关文章 不会就是你写的吧:)
chihiro2014
2022-04-20 23:19:05 +08:00
最近接手的项目都是 ng 的,然后历史遗留问题,目前是 ng5 ,不少地方其实没有写类型限制

为了方便日后推进升级,于是只能自己慢慢动手加了
Jooooooooo
2022-04-20 23:32:10 +08:00
方便的东西总是会被用上的, 所以最好的方案是禁用这种东西(机制上禁用, 而不是规范).
tedding
2022-04-21 02:24:09 +08:00
用了 3 年的 angular……起初也被 ts 搞的焦头烂额,现在如鱼得水,两个字,丝滑……
debuggerx
2022-04-21 03:12:04 +08:00
不用 ts 类型不会写+1 。
真的还挺佩服不用类型系统还能写出代码的选手[狗头]
musi
2022-04-21 06:54:25 +08:00
楼上可能搞混了类型系统和类型体操
这两不是一个概念
kensoz
2022-04-21 08:25:18 +08:00
学 vue3 那时候,我就想知道 ref 的类型写在哪,有没有什么最佳实践,于是就上 github 看开源项目
90%的项目基于 Vue3 + TS 但是写法都是:let foo = ref(666)
这种简单的类型也就算了,复杂的 dom ,bom 和对象这 90%的项目也没有加类型
对于这 90%的项目就是把.js 改成.ts 而已
lixm
2022-04-21 08:48:03 +08:00
@kensoz ref 不是支持泛型的吗? ref<T>
anguiao
2022-04-21 09:05:17 +08:00
@kensoz
number 这种能推断出来的,本来就不需要写啊。静态类型不代表必须显式声明类型。
当然了,模板引用这种情况,还是应该写上类型的。
bam9
2022-04-21 09:14:25 +08:00
@wunonglin ng 是啥?
darkengine
2022-04-21 09:21:12 +08:00
看来我还没入门,项目里用了 TS ,但是用法是 interface 和 enum 一把梭。
fgwmlhdkkkw
2022-04-21 09:23:48 +08:00
@golangLover #7 那我就用 JSON 串😀
pigspy
2022-04-21 09:24:56 +08:00
不用,大部分情况下完全用不到类型体操
dvsilch
2022-04-21 09:27:49 +08:00
类型体操不是指各种花哨方式去实现一些偏门的类型推测吗。。。难道我理解错了?
christin
2022-04-21 09:36:41 +08:00
刚开始写 ts ,不到 100 行的代码出了一大堆错误。
kensoz
2022-04-21 09:51:24 +08:00
@anguiao 没错,我想表达的就是很多开源项目根本没有类型声明,跟别提类型体操了,就是单纯的改.js 为.ts
kensoz
2022-04-21 09:53:08 +08:00
@lixm 有的,这都是简单的,一些稍微复杂一点的地方比如 axios 的返回值和错误的类型,基本再开源项目里都没有见到过
icyalala
2022-04-21 10:09:36 +08:00
所以类型体操到底是什么
Torpedo
2022-04-21 10:31:43 +08:00
不同人对体操的水平定义不太一样。不知道楼主体操的定义复杂度是多少
不过,普通的开发水平,看 ts 定义,直接看官方的 https://github.com/microsoft/TypeScript/blob/main/lib/lib.dom.d.ts ,在里面找一些常见的 api ,看看他们 ts 类型就明白了

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

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

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

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

© 2021 V2EX