低估了 typescript 的难度 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
datadump
V2EX    TypeScript

低估了 typescript 的难度

  •  
  •   datadump 2024-08-29 17:36:33 +08:00 5374 次点击
    这是一个创建于 454 天前的主题,其中的信息可能已经有所发展或是发生改变。

    早期是用的 js ,因为类型系统出了很多浪费时间的 bug ,后来迷迷糊糊用了大半年,以为一知半解了

    这几天开始撸这个 ts 的类型体操,简单的都撸的战战兢兢,汗如雨下,各位大神来挑战下:(它还有个 vscode 插件) https://github.com/type-challenges/type-challenges/blob/main/README.zh-CN.md

    18 条回复    2024-08-31 00:11:37 +08:00
    kemf
        1
    kemf  
       2024-08-29 18:27:54 +08:00
    any 解决一切问题
    sampeng
        2
    sampeng  
       2024-08-29 19:05:26 +08:00   1
    这个所谓的类型体操在我看起来就是炫技。技巧用得越多,后人(包括自己)在半年后再来看代码就跟看天书一样
    mshadow
        3
    mshadow  
       2024-08-29 22:18:05 +08:00 via Android
    js 和 ts 完全是烂出了两个极端
    BeautifulSoap
        4
    BeautifulSoap  
       2024-08-29 22:30:14 +08:00
    想给自己上强度就是这样的,
    作为用 ts 写业务的后端,我每个项目都配好非常严格的 eslint ,然后写死编码风格 guideline 。基本上就是拿 ts 当 golang 和 java 来写。敢在项目里玩类型体操基本上 pr 我都是直接打回去,这样一套组合拳下去,至少项目代码是个人都能看懂了。也减少了成员作妖的几率
    guiyumin
        5
    guiyumin  
       2024-08-30 00:36:04 +08:00
    类型体操的话,如果你是自己维护一个 library ,让别人用,我觉得还可以

    写业务,就别用类型体操了,不好维护,也没必要
    AV1
        6
    AV1  
       2024-08-30 01:11:59 +08:00
    正常开发中,都是把 TS 当高级一点的注释来写的,基本没什么难度。
    哪有在业务里玩类型体操的?
    kneo
        7
    kneo  
       2024-08-30 08:37:16 +08:00 via Android
    typescript 上限极高,有点自知之明。
    han3sui
        8
    han3sui  
       2024-08-30 08:45:38 +08:00
    遇到难定义的类型,交给 gpt 比较省事
    lisxour
        9
    lisxour  
       2024-08-30 09:27:47 +08:00
    ts 能这么花里胡哨也不一定说你都得会,能用个 20 种都很 ok 了,我看了这个 repo 的很多类型例子,一大半以上奇奇怪怪的类型都是没事找事,纯为了恶心自己而恶心自己,随便找个例子
    forty
        10
    forty  
       2024-08-30 10:22:38 +08:00
    稍微复杂一点的 ts 类型,我写不出来,也看不懂。尽量用简单的,不行就加点儿注释。
    penll
        11
    penll  
       2024-08-30 10:29:31 +08:00
    使用 ts ,对自己是个提升。让自己多一种编程思想何尝不是大受益。
    后续面对复杂的大项目,ts 不是得心应手。团队开发、风险控制等等
    IanHo
        12
    IanHo  
       2024-08-30 10:51:31 +08:00
    还好吧,问问 gpt 就好了,以前没 gpt 要 google 才真烧脑
    WJYuan
        13
    WJYuan  
       2024-08-30 12:17:35 +08:00
    实际业务代码里不会有这么复杂的类型体操
    justdoit123
        14
    justdoit123  
       2024-08-30 14:03:39 +08:00   1
    别别别,业务代码真别用复杂体操。

    TypeScript 你区分清楚哪些是 type ,哪些是 js 的代码就很阿弥佗佛了!日常用起来基本不会有什么问题。最低标准是一个逻辑单元对外的要有类型,对内实在没办法的地方就用 any 与 as 。没必要追求处处都要类型自洽。

    进阶一点,知道 narrowing 、一些类型自动推导的逻辑即可。

    类型体操,即便是写 lib 也不是太推荐用复杂的类型体操。太多次的变换、跳转,让用 lib 的人查起来也是很费力。
    wkj89
        15
    wkj89  
       2024-08-30 14:07:59 +08:00
    后端仔表示:强类型 洒洒水啦
    huija
        16
    huija  
       2024-08-30 16:14:26 +08:00
    类型体操无所谓,关键这玩意只能编译时骗骗自己。。
    HTML001
        17
    HTML001  
       2024-08-30 18:00:31 +08:00
    我觉得 TS 适合做组件类的用,通用组件类用了 TS ,用起来顺心顺手。
    但是业务代码用 TS 收益很低,有些复杂的内容,写起来恶心,维护起来更恶心(例如 9 楼那种),关键对代码的正向作用又很有限
    datadump
        18
    datadump  
    OP
       2024-08-31 00:11:37 +08:00
    感谢各位大佬。说的都很有道理。这下终于不纠结了~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4888 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 05:41 PVG 13:41 LAX 21:41 JFK 00:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86