V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JosieZhao
V2EX  ›  TypeScript

现在前端都要求用 Typescript 开发?会的人多吗?举个手聊聊呗~

  •  
  •   JosieZhao · 2021-03-11 15:16:21 +08:00 · 7830 次点击
    这是一个创建于 1113 天前的主题,其中的信息可能已经有所发展或是发生改变。
    78 条回复    2021-04-22 10:04:49 +08:00
    PinkRabbit
        1
    PinkRabbit  
       2021-03-11 15:48:39 +08:00
    会写,不常用,如果团队都会,用起来还是不错的
    YadongZhang
        2
    YadongZhang  
       2021-03-11 16:10:38 +08:00   ❤️ 1
    ironblood
        3
    ironblood  
       2021-03-11 16:17:25 +08:00
    前阵子抄(划掉)借鉴别人的一个库,顺手用 TS 改写,没有深入学习,类型判断确实省心很多,上手也比想象中容易。
    ccraohng
        4
    ccraohng  
       2021-03-11 16:24:15 +08:00 via iPhone
    现在全部 ts 开发,低级 bug 几乎没怎么出现
    jones2000
        5
    jones2000  
       2021-03-11 16:25:14 +08:00
    不会,js 直接上。
    jones2000
        6
    jones2000  
       2021-03-11 16:27:17 +08:00
    写 js 就为了放飞自己, 怎么写都可以。 强类型的直接用 c++, java 不就可以了。
    JosieZhao
        7
    JosieZhao  
    OP
       2021-03-11 16:27:51 +08:00
    会写就已经很厉害了~
    JosieZhao
        8
    JosieZhao  
    OP
       2021-03-11 16:28:21 +08:00
    @PinkRabbit 会写就很厉害了
    Sapp
        9
    Sapp  
       2021-03-11 16:28:27 +08:00
    要求的还是挺多的,会的人也不少啊,按照我最近收简历看,做 vue 的会的人比较少,react 的有三分之一以上都用过一些。另外在我司 ts 是核心,react 不是,leader 允许特定项目 react 换 ng vue,但是不允许不用 ts
    JosieZhao
        10
    JosieZhao  
    OP
       2021-03-11 16:29:29 +08:00
    @ccraohng 强!团队都用 ts 吗?
    JosieZhao
        11
    JosieZhao  
    OP
       2021-03-11 16:31:53 +08:00
    @Sapp 大佬你的实力也是很 OK,get 了~抱拳
    Kaciras
        12
    Kaciras  
       2021-03-11 16:32:31 +08:00
    多啊,我现在能用 TS 的一律上,有类型写得才舒服。
    michaelcheng
        13
    michaelcheng  
       2021-03-11 16:33:18 +08:00
    17 年公司用 ng 所以用的 ts ,后面换了公司就很少用了,小公司,推了几次也没用下去。主要看公司吧
    gdrk
        15
    gdrk  
       2021-03-11 16:38:51 +08:00
    面试的时候公司可以不用,但你得会...
    toma77
        16
    toma77  
       2021-03-11 16:45:40 +08:00
    以前没用 react 的时候是 ts+golang
    现在是 ts+react+next.js
    murmur
        17
    murmur  
       2021-03-11 16:48:32 +08:00
    我们没用 ts,这东西其实不是那么刚需,文档都给了你,很多人用参数都是复制粘贴,就算.能.出来 api,不看文档直接盲猜参数的也要打死
    JosieZhao
        18
    JosieZhao  
    OP
       2021-03-11 16:49:17 +08:00
    @michaelcheng 对,都是一线大厂要求 TS 比较多,小公司技术提升还是有局限
    JosieZhao
        19
    JosieZhao  
    OP
       2021-03-11 16:50:56 +08:00
    @toma77 强~~求指教,方便留个 wechat 吗?
    ALVC666
        20
    ALVC666  
       2021-03-11 17:06:33 +08:00
    能写 但是不是必须
    因为公司团队小 也没有全部项目过渡到 ts 的打算
    就新项目可能会推行试试看
    viator42
        21
    viator42  
       2021-03-11 17:12:10 +08:00
    ES6 已经不够看了么
    otakustay
        22
    otakustay  
       2021-03-11 17:18:18 +08:00
    用不了 3 年,不会 TS 就不用进一线大厂了
    libook
        23
    libook  
       2021-03-11 17:18:27 +08:00   ❤️ 1
    我基本上就是写 JS,然后加上类型声明啥的,扩展名写 ts——齐活儿。
    TS 兼容 JS 的语法,没啥大难度。

    TS 不是银弹,项目上有问题可以用 TS 来解决就用 TS,没有啥特别需求的话也没必要强上。

    JS 非常灵活,所以对开发者要求很高,经验不够丰富的开发者很容易写出一些有缺陷的代码,TS 可以被用来实现一些开发上的约束,从而规避一些问题。

    相应的还有 Go,没有那么灵活,大多需求都有确定的一种方案,所以降低了无意间造成的“骚操作”,减少了问题。

    TS 仅会做编译时类型检查,不做运行时的保障,所以对于外源输入数据的情况还是要自己做好类型检查,或者使用一些真·强类型语言。

    JS 也不是说就可以扔了,TS 再怎么🐂🍺最终也都是编译成 JS 运行的,精通 JS 可以让你有更强的解决问题的能力。
    kingwl
        24
    kingwl  
       2021-03-11 17:21:30 +08:00
    能用就用。
    iwh718
        25
    iwh718  
       2021-03-11 17:48:40 +08:00 via iPhone
    我不用 ts 很反感。如果需要强类型 我可以使用 kotlin 或者 swift 。但是我拒绝 js 换成 ts 。就是内心反感。这不是我一开始喜欢的 js 了
    shenyu1996
        26
    shenyu1996  
       2021-03-11 18:01:06 +08:00
    习惯了还是很香的 适用于业务数据复杂的项目
    可以避免很多因为数据类型带来的低级错误
    小项目就没必要了 js 一把梭出活快
    wktrf
        27
    wktrf  
       2021-03-11 18:23:22 +08:00
    个人觉得 TS 不是约束而是帮助,懒人必备那种,某些库类型+名称甚至不用看文档
    jadehare
        28
    jadehare  
       2021-03-11 18:26:53 +08:00
    有些情况下 ts 比较麻烦,但是写 ts 以后再也不怎么写 js 了
    Bijiabo
        29
    Bijiabo  
       2021-03-11 18:32:12 +08:00
    能上 TS 就尽量 TS,习惯之后还是挺香的,降低很多心智成本。
    如果是团队开发的话估计未来都会要求吧
    OHyn
        30
    OHyn  
       2021-03-11 18:52:51 +08:00
    第一次用的时候就帮我挡掉了一个低级错误。。。
    amundsen
        31
    amundsen  
       2021-03-11 18:56:23 +08:00
    ts 非常重要
    Jackeriss
        32
    Jackeriss  
       2021-03-11 18:56:59 +08:00 via Android
    TS 难在哪里?
    1a0ma0
        33
    1a0ma0  
       2021-03-11 18:58:49 +08:00
    TS 挺香的。。。最近毕设做游戏,就拿 TS 写的。。。
    weixiangzhe
        34
    weixiangzhe  
       2021-03-11 19:33:17 +08:00
    会写就会,不会就是 any
    learningman
        35
    learningman  
       2021-03-11 19:35:58 +08:00 via Android
    ts 很舒服的,就是有的时候引入 js 的库会有点恶心
    love
        36
    love  
       2021-03-11 19:37:22 +08:00 via Android
    @iwh718 固执与第一印象是大忌。另外 TS 类型系统比你说的传统静态语言强大太多了,简直是结合动静两类语言的优点
    xarthur
        37
    xarthur  
       2021-03-11 19:55:55 +08:00 via iPhone
    不是前端,没怎么学会 JS 直接上的 TS,我现在是 TS 比 JS 熟悉(
    LiuJiang
        38
    LiuJiang  
       2021-03-11 20:00:14 +08:00
    把 JS 的特点都抹杀掉了
    KuroNekoFan
        39
    KuroNekoFan  
       2021-03-11 21:29:48 +08:00 via iPhone
    根据服务端文档定义类型还是蛮好的,不过这个也不一定要 ts,比如 webstorm 也能根据方法参数的解构写法来做一些推断,不过 ts 还是强大很多,很符合我心目中“flexible type”的定位
    rodrick
        40
    rodrick  
       2021-03-11 21:36:10 +08:00
    还好吧 主要不就是类型判断和接口类继承这些 可能是之前写过 java 的愿意 反正我觉得差不多
    kikyous
        41
    kikyous  
       2021-03-11 21:48:50 +08:00 via Android
    ts 很爽
    luwies
        42
    luwies  
       2021-03-11 21:55:17 +08:00
    我挺喜欢的
    yazoox
        43
    yazoox  
       2021-03-11 21:58:57 +08:00
    有时候用的第三方库,没有 TS 提供怎么办?
    Shook
        44
    Shook  
       2021-03-11 22:07:24 +08:00
    会用,但我不喜欢用。
    cs3230524
        45
    cs3230524  
       2021-03-11 22:09:12 +08:00
    核心、框架、架构用 ts,业务代码 js
    renmu123
        46
    renmu123  
       2021-03-11 22:18:12 +08:00 via Android
    楼上怎么都是吹的,我是实在用不习惯 ts,何况现在的生态也不是很完善
    lupkcd
        47
    lupkcd  
       2021-03-11 22:27:13 +08:00
    anyscript
    meteor957
        48
    meteor957  
       2021-03-11 22:29:27 +08:00
    any 满天飞
    zhangshine
        49
    zhangshine  
       2021-03-11 22:35:59 +08:00
    用起来很爽,第三方库没有就直接加上也很方便。
    zhangshine
        50
    zhangshine  
       2021-03-11 22:36:13 +08:00
    @zhangshine 自己加上
    x4storm
        51
    x4storm  
       2021-03-11 22:45:29 +08:00
    库的类型写好点, 平时写业务大部分都可以推断出来, 减少语法噪音.
    CismonX
        52
    CismonX  
       2021-03-11 22:52:33 +08:00 via iPhone
    虽然我不做前端,但去年还是稍微学了下 ts,做了两个练手项目

    众所周知的优点不必多说,这里特意想强调的是,ts 的类型系统是图灵完备的,你可以用它做类似 C++的模版元编程

    前段时间我还特意用 ts 的类型系统实现了某编程语言的解释器。纯 ts 编译期实现,无需执行任何 js
    rbe
        53
    rbe  
       2021-03-11 23:07:53 +08:00
    一个较大的长期迭代的 js 项目,必然会存在文档缺失 /文档描述不清 /责任人早已离职或者他也记不清之类的问题。能够做到良好地实践 ts 的话,会在很大程度上缓解看不懂参数 /传参千奇百怪太 magic/频繁出各种低级小 bug 等等问题。就算用不好,用成了 anyscript 其实收益也是可以的,上手没有那么难。
    rbe
        54
    rbe  
       2021-03-11 23:27:46 +08:00
    个人认为 ts 最麻烦的问题是真正上手之后会发现他的类型系统的表现和直观的认知不一样,导致经常要花很多时间研究怎么让类型正确匹配。比如在创造复杂类型的时候需要了解各类类型体操,比如枚举类型不能方便的遍历,还有 ... 操作符和元组的各类历史遗留问题,需要你持续关注 ts 版本更新和发展等。很多人没有这个时间研究或者一时处理不来,就会写 anyscript,然后再也没机会回来管了,any 代码变多就容易越用越错最后也很难纠正了……
    lswl66
        55
    lswl66  
       2021-03-11 23:52:52 +08:00 via iPhone
    后端人员会比较喜欢 ts
    Leviathann
        56
    Leviathann  
       2021-03-12 02:08:29 +08:00 via iPhone
    ts 的类型系统很牛批
    比 java 这种半调子强多了
    airfling
        57
    airfling  
       2021-03-12 10:28:39 +08:00
    会简单写,拿来改是没问题的,主要是后端开发
    newmlp
        58
    newmlp  
       2021-03-12 10:29:56 +08:00
    @jones2000 C++这种有指针的东西肯定不是强类型 [笑而不语]
    Jinnn
        59
    Jinnn  
       2021-03-12 10:31:41 +08:00
    ts 很香, 但是要用起来还是要看团队, 特别是接口方面没有 d.ts 的话就是 any script, 不知道有没有后端肯提供这个
    DOLLOR
        60
    DOLLOR  
       2021-03-12 11:13:01 +08:00
    @newmlp
    很多人嘴上“强类型”“弱类型”,实际上要的是“静态类型”“动态类型”,甚至只是“类型检查”而已。[无奈]
    jymsy
        61
    jymsy  
       2021-03-12 11:24:36 +08:00
    ts 用两年了都
    Rsl
        62
    Rsl  
       2021-03-12 11:51:07 +08:00
    最近一两个月开始在新项目里尝试学习使用, 上手之后有爽到, 强烈推荐.
    ArrayBuffer
        63
    ArrayBuffer  
       2021-03-12 12:00:25 +08:00
    旧项目可以启用 `allowJS` 的, 在此基础上新功能可以用 `TypeScript`, 旧功能可以不用动; 新项目当然要直接上 `TypeScript` 的
    namelosw
        64
    namelosw  
       2021-03-12 12:32:07 +08:00
    TS 基本是带 Gradual typing 且比较类型系统比较高级的主流代表了, 非主流代表是 Typed Racket.
    不是 Gradual 的主流代表是 Scala, 非主流代表是 Haskell.

    用起来比较有意思, 而且补全比较好其实用好了写起来很快. 但是坑的确多, 总的来说 TS 打开了走向了 dependent typed 的魔盒, 但又没有 dependent type, 所以很多时候会撞空气墙.

    TS 有三种代码风格, 或者是这三种的混合:

    1: 基本就是 JS, 全靠推导, 偶尔加 any.
    2: 基本就是 Java, 类型系统按最简单的用, 代码本身像 Java 有点啰嗦.
    3: 代码风格像 JS, 但是带签名. 因为代码很灵活, 所以签名非常鬼畜, 其实随便打开一个库就会发现里面整页都是签名.

    不过还是比较建议用的, 大家统一了整个代码库 123 偏向哪种就好.
    vvmap
        65
    vvmap  
       2021-03-12 12:55:53 +08:00
    写了 ts+react,再回来看以前 js+vue 。 ??? 这代码???有没有跟我一样的感受
    jsjgjbzhang
        66
    jsjgjbzhang  
       2021-03-12 13:23:02 +08:00
    主流的游戏引擎已经强制使用 TS 了
    wangboyang
        67
    wangboyang  
       2021-03-12 14:01:31 +08:00
    日常工作的话我觉得用不用大部分情况主要看上面给的时间和对于某个项目的代码质量关注程度,上面给你说今天下班前搞个项目出来哪还有心情搞什么类型声明,上面急着给 xx 总去报告,谁管你代码怎么写的,js 索嗨就完了,根据经验这种情况下就算强上 ts 大部分团队下面开发的时候为了赶工都是各种 any,看着贼恶心还不如不用;假如项目话事人只关心业务产出不关心代码的话,ts 也挺难推的;假如话事人是技术出身并且很关注代码质量,评估各方面工时的时候自然会以 ts 的标准去衡量
    HanMeiM
        68
    HanMeiM  
       2021-03-12 14:39:36 +08:00
    后端表示 ts 真的很舒服,都要有强迫症了,不知道这个变量里面是什么东西就很发慌。
    jones2000
        69
    jones2000  
       2021-03-12 16:54:05 +08:00
    @newmlp 指针有很多种, 不同类型的指针是不能赋值的, 除非你强制转换指针类型赋值.
    bzw875
        70
    bzw875  
       2021-03-12 17:07:06 +08:00
    要求用 TS,挺喜欢用的,但是奈何不了没有追求的人写一大堆的 any
    sewer
        71
    sewer  
       2021-03-12 18:22:37 +08:00 via iPhone
    @jones2000 用有声明的库有提示 然后自己全用 any 狗头
    jones2000
        72
    jones2000  
       2021-03-12 22:14:03 +08:00
    @sewer 你这个 c++版本有要求的吧, 老点的 c++98 根本就不支持。
    shroxd
        73
    shroxd  
       2021-03-12 23:44:42 +08:00 via iPhone
    写库的时候只用 ts 。最初其实还是有点偏见的,后来读了 vue 的源码,才发现 ts 原来这么优雅,马上就真香了
    xumng123
        74
    xumng123  
       2021-03-13 10:10:45 +08:00 via iPhone
    啥热搞啥,没有必要。
    hooks
        75
    hooks  
       2021-03-13 13:47:02 +08:00
    TS 一开始用感觉很麻烦,后面就真香了
    AndyAO
        76
    AndyAO  
       2021-03-20 12:31:01 +08:00
    TypeScript 是大势所趋,因为随着代码库的庞大和复杂,类型变得越来越重要。

    从 StackOverFlow 2020 年度的统计数据来看,TypeScript 在程序员中的受欢迎程度已经超过 Python,位居第 2 位。[^1]

    越来越多的项目都推荐使用 TypeScript 。

    [^1]:https://stackoverflow.blog/2020/05/27/2020-stack-overflow-developer-survey-results/
    emilll
        77
    emilll  
       2021-04-15 01:49:59 +08:00
    @vvmap 一样的感受!我是 vue3+ts,再也回不去了!!!
    fox2081
        78
    fox2081  
       2021-04-22 10:04:49 +08:00
    @Jinnn 可以提供,我们就是这么干的,去年秋季缠着我们后端让他们给我生成 dts,我给他们说转换规则,但转换起来多多少少都有些问题,后面又改成了让他们把枚举、类型、接口路由、参数类型、返回类型都提取到一个 json 中返回,我这边又使用模版生成 dts 和对应的 ts 源码(源码只是枚举部分),接口使用代理实现,使用类似 ApiXxx.get['cmd'](params: P).then((res: T) => {})。

    现在项目已经有 1w8+行的 dts 了,500+个接口,打包之后整个包也就 15k,里面有 13k 主要是枚举定义,使用起来效率直接起飞,传入参数、返回值、枚举定义都不用自己搞,注释也附带了后端写的,原本的 Api 文档升级计划都搁置了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1021 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 19:37 · PVG 03:37 · LAX 12:37 · JFK 15:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.