因为发现自己的 TS 一直是半桶水的水平,所以想通过看一些开源的项目,看看有没有好借鉴的代码,但在 github 上翻了几个 TS 的项目,发现基本上都是 70%的正常的 JS 书写,即使有,也基本没有全面覆盖类型推断,而 TS 类型体操更是寥寥无几,但关于 TS 的话题,在前端却异常的火爆。可能是我查询的项目有问题,有没有 V 友能提供几个相关 TS 覆盖率比较全的项目,十分感谢。
1
wobuhuicode 2022-04-20 17:37:30 +08:00 6
随着项目增大和更多人进来,后面的类型都会变成 any
|
2
Oktfolio 2022-04-20 17:41:23 +08:00
Angular 的项目 TS 用得应该都不差的
|
3
Chad0000 2022-04-20 17:46:06 +08:00
看来 OP 没写过 Angular ?自从 AngularJS 升级到 Angular 后项目就都转 TS 了。
|
4
ChefIsAwesome 2022-04-20 17:47:55 +08:00 via Android 1
看到很多人花时间研究某个类型怎么推导出来,我感觉本末倒置,难以理解。
我觉得最终的 API 能有类型,好让编辑器可以提示就够了。可能是因为我从来不写什么 class 之类的东西,所以才有这种想法。 |
5
DoubleKing 2022-04-20 17:48:14 +08:00
同求
|
6
sjhhjx0122 2022-04-20 18:07:16 +08:00
ng 只能 ts 写,所以随便找个 ng 项目都是 ts 的,vue3 也是 ts 写的
|
7
golangLover 2022-04-20 18:10:28 +08:00 via Android
禁止 any 就好
|
8
seakingii 2022-04-20 18:14:16 +08:00
typescript 的类型系统,搞得我怀疑人生
|
9
nzbin 2022-04-20 19:42:37 +08:00
这个简单,直接搜 angular ,几乎都是 ts ,而且质量都很高
|
10
wunonglin 2022-04-20 19:44:19 +08:00
我就是看 ng 源码学 ts 的,质量很高
|
11
ruoxie 2022-04-20 22:07:01 +08:00
写了两年 TS 了,问下 TS 类型体操是什么东西。https://github.com/lowcoding/lowcode-vscode vue ,react ,node 都有
|
12
Leviathann 2022-04-20 22:09:36 +08:00
@ruoxie 比如用 ts 的类型写一个 lisp 的解释器
|
13
Leviathann 2022-04-20 22:16:00 +08:00
@ruoxie 偏实用方向的话,比如 lodash 的 get 函数,其实可以做到完全的类型安全
https://github.com/sindresorhus/type-fest/blob/main/source/get.d.ts |
14
XCFOX 2022-04-20 22:30:17 +08:00
我见过类型体操最 6 的项目:
https://github.com/codemix/ts-sql |
15
cszchen 2022-04-20 22:31:32 +08:00 via iPhone
我觉得 ts 写起来很舒服啊,赶时间的时候蛋疼。
|
16
xiangwan 2022-04-20 22:33:28 +08:00
|
17
enchilada2020 2022-04-20 22:40:11 +08:00 via Android
@xiangwan 这个就是操场 233 不是实际项目
|
18
magicdawn 2022-04-20 22:40:24 +08:00
|
20
Loserzhu 2022-04-20 22:44:59 +08:00
大一点的项目不用 ts 根本不会写。简历各个写熟练 ts ,随便问个如:用其他 type uitls 实现 Omit ,至少一半的都没听过 Omit Pick Exclude 这些。
|
21
Rocketer 2022-04-20 22:57:18 +08:00 via iPhone
@Loserzhu Java 转过来的人一般喜欢 TS ,就是因为它更像 Java ,写着舒服。但他们也不会因此而去研究 TS 的特性,像写 Java 一样写 TS 才是他们想要的,也是 TS 的最大价值所在。
前端圈之所以讨论热烈,是因为 type 对他们来说是个新鲜事物,既麻烦又有用,难免会争论。但后端谁会有兴趣讨论这低一档的玩意? 但你这个做法是在考别人 TS 特有的东西,舍本逐末了。 |
22
enchilada2020 2022-04-20 23:07:25 +08:00 via Android
@Leviathann 这个在知乎上也看到过相关文章 不会就是你写的吧:)
|
23
chihiro2014 2022-04-20 23:19:05 +08:00
最近接手的项目都是 ng 的,然后历史遗留问题,目前是 ng5 ,不少地方其实没有写类型限制
为了方便日后推进升级,于是只能自己慢慢动手加了 |
24
Jooooooooo 2022-04-20 23:32:10 +08:00
方便的东西总是会被用上的, 所以最好的方案是禁用这种东西(机制上禁用, 而不是规范).
|
25
tedding 2022-04-21 02:24:09 +08:00 via iPhone
用了 3 年的 angular……起初也被 ts 搞的焦头烂额,现在如鱼得水,两个字,丝滑……
|
26
debuggerx 2022-04-21 03:12:04 +08:00
不用 ts 类型不会写+1 。
真的还挺佩服不用类型系统还能写出代码的选手[狗头] |
27
musi 2022-04-21 06:54:25 +08:00 2
楼上可能搞混了类型系统和类型体操
这两不是一个概念 |
28
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 而已 |
30
anguiao 2022-04-21 09:05:17 +08:00
|
32
darkengine 2022-04-21 09:21:12 +08:00
看来我还没入门,项目里用了 TS ,但是用法是 interface 和 enum 一把梭。
|
33
fgwmlhdkkkw 2022-04-21 09:23:48 +08:00
@golangLover #7 那我就用 JSON 串😀
|
34
pigspy 2022-04-21 09:24:56 +08:00
不用,大部分情况下完全用不到类型体操
|
35
dvsilch 2022-04-21 09:27:49 +08:00
类型体操不是指各种花哨方式去实现一些偏门的类型推测吗。。。难道我理解错了?
|
36
christin 2022-04-21 09:36:41 +08:00 via iPhone
刚开始写 ts ,不到 100 行的代码出了一大堆错误。
|
39
icyalala 2022-04-21 10:09:36 +08:00
所以类型体操到底是什么
|
40
Torpedo 2022-04-21 10:31:43 +08:00
不同人对体操的水平定义不太一样。不知道楼主体操的定义复杂度是多少
不过,普通的开发水平,看 ts 定义,直接看官方的 https://github.com/microsoft/TypeScript/blob/main/lib/lib.dom.d.ts ,在里面找一些常见的 api ,看看他们 ts 类型就明白了 |
41
Jsonz 2022-04-21 10:34:37 +08:00
antDesign ReactTable
|
43
mmmfj 2022-04-21 12:31:18 +08:00
开源库会用,项目用不到
|
44
equt 2022-04-21 12:49:08 +08:00 via iPhone
fp-ts ,或者说一众 FP 库,可以看一下。基本是抄了当年 OCaml 的操作,用 Module System 模拟 HKT ,然后把一些常见的代数结构搬进了 TS 。
其实热门一些的项目可以看看 Vue 3 的几个编译时宏是怎么定义的;官方的几个新的类型,比如递归的 Awaited 是怎么随着 tsc 一步步优化进标准库的;官方的 Blog 也值得看看,尤其注意几个重要的时间节点,比如 Template String Literal 、递归类型。 最后试着实现简单的运行时 pick 、rename 、omit 这种工具函数,困难的可以试试 encoding 和 decoding ,参考 zod 或者 io-ts ,看看后者怎么把 Lens 搬到 TS 里。 P.S. 上面几个库的衍生品也很有意思 |
45
justin2018 2022-04-21 13:53:37 +08:00
TS 类型体操 感觉好复杂 但是有套路 要是在复杂 我没也搞不定了~~
这个小册内容还不错 可以看看 非作者~~ 非推广~~ TypeScript 类型体操通关秘籍 https://juejin.cn/book/7047524421182947366 |
46
jin5354 2022-04-21 14:34:47 +08:00
实际开发中写 ts 写着写着写不下去了没太多必要纠结,直接 any ,as 什么的用起来。
因为 ts 开发了这么多年还是个弱智,太多的类型收窄什么的不懂自动识别,写着费劲死 |
47
keyrinrin 2022-04-21 14:36:06 +08:00
简单用用是挺好用,但看到其它项目一堆泛型秀操作,感觉更繁杂了
|
48
chuanqirenwu 2022-04-21 17:20:19 +08:00
弱弱问一下,什么是类型体操?
|
49
KaGaMiKun 2022-04-24 18:22:54 +08:00
想起了我这边之前 vue 有人设计的组件直接 any
但用得地方又很有限,有些地方没法重用,但打包就是没问题,一跑就红 |