V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zzlatan
V2EX  ›  问与答

TypeScript 真的是必须的吗?

  •  
  •   zzlatan · 2022-01-21 16:15:49 +08:00 · 5402 次点击
    这是一个创建于 1037 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在每个前端项目都要上这个,感觉语法丑陋,读起来并没有很优雅,还有学习门槛,真的有必要吗?

    37 条回复    2022-01-27 21:33:58 +08:00
    EPr2hh6LADQWqRVH
        1
    EPr2hh6LADQWqRVH  
       2022-01-21 16:17:15 +08:00   ❤️ 4
    不是。内裤也不是必须的,还要花钱买,完全没有必要。
    66beta
        2
    66beta  
       2022-01-21 16:18:42 +08:00
    共存期确实比较烦,但是有了提示和约束,对开发体验和代码质量有很大帮助。
    lneoi
        3
    lneoi  
       2022-01-21 16:20:39 +08:00
    增加的噪音太多了 可以不全部上, 必要的项目和库上一下
    iikebug
        4
    iikebug  
       2022-01-21 16:20:55 +08:00
    单个人的项目没必要,但是二个人及以上,这东西就很用必要了,看一下类型就能知道很多东西。
    murmur
        5
    murmur  
       2022-01-21 16:24:58 +08:00
    对于简单项目,赶紧堆工作量出成果要紧,ts 的学习成本也是成本
    grewer
        6
    grewer  
       2022-01-21 16:26:18 +08:00
    interface+注释, 看到这个组件就知道哪些是必须的, 哪些是可选的, 哪些是函数存在什么问题等等, 用起来舒适
    luob
        7
    luob  
       2022-01-21 16:27:09 +08:00
    你完全可以写 JavaScript 然后命名为 .ts ,并没有人不让你写 AnyScript
    SxqSachin
        8
    SxqSachin  
       2022-01-21 16:28:50 +08:00
    不必须,但是有了类型的话团队协作会更好一些,同时代码提示也更友好。
    cmdOptionKana
        9
    cmdOptionKana  
       2022-01-21 16:29:19 +08:00
    单人小项目也建议用 ts ,重构的时候方便很多,代码提示也更精准,而且最大的好处是“渐进式”,你可以先使用其中一小部分看得顺眼的特性,后续再慢慢熟悉。
    yaphets666
        10
    yaphets666  
       2022-01-21 16:31:07 +08:00
    这个东西就是增加开发成本,略微提高代码质量(也有相当大可能性降低代码质量).你能接受这种交换,那就合适.否则不合适.
    micean
        11
    micean  
       2022-01-21 16:31:19 +08:00
    注解和高级类型对于我帮助很大,看了一天就上手了,相信 ts 不是一个问题
    gouflv
        12
    gouflv  
       2022-01-21 16:36:37 +08:00 via iPhone
    没人逼你用吧?
    murmur
        13
    murmur  
       2022-01-21 16:38:59 +08:00   ❤️ 7
    你们不要高估那种中低级水平的项目,需求不定,设计不定,接口不定,你满心欢喜的拿到接口才发现,除了 http 协议是对的,其余的一塌糊涂

    这个时候你写各种定义就是浪费生命
    otakustay
        14
    otakustay  
       2022-01-21 16:44:42 +08:00
    我现在无论项目大小,写 TS 比写 JS 还快……
    zhaol
        15
    zhaol  
       2022-01-21 16:46:08 +08:00
    没有代码提示写的下去?
    enchilada2020
        16
    enchilada2020  
       2022-01-21 16:46:48 +08:00 via Android
    @murmur 多么痛的领悟!如果需求瞎改 又狂赶工期 老代码不及时更新维护 开发前不能详细调查仔细设计 那过期的定义就是灾难 误导性极强
    sweetcola
        17
    sweetcola  
       2022-01-21 16:48:55 +08:00
    以前的我:TS 这东西谁会用啊,太恶心了,100 行代码里要写 50 行定义,太啰嗦了。
    现在的我:真香
    enchilada2020
        18
    enchilada2020  
       2022-01-21 16:52:36 +08:00 via Android   ❤️ 1
    JS 太随便了 想写好对使用者的要求很高 用 TS 至少可以保证一定程度的规范性 减少低级错误 还可以把类型信息显式体现在代码中
    个人觉得 TS 那部分的学习成本 本来是在学 JS 时就必须要下的功夫 欠的债早晚要
    而且 TS 的类型系统能玩出花来…
    enchilada2020
        19
    enchilada2020  
       2022-01-21 16:53:18 +08:00 via Android
    @enchilada2020 欠的债早晚要还
    3dwelcome
        20
    3dwelcome  
       2022-01-21 16:58:14 +08:00
    很多人用 TS ,就是为了用智能提示推导吧。

    然而我写代码,基本上都是全关提示的,IDE 里一片寂静。
    sphawkcn
        21
    sphawkcn  
       2022-01-21 17:13:24 +08:00
    @3dwelcome #20 智能提示和推导可以少打很多很多字,为啥不用?
    wukongkong
        22
    wukongkong  
       2022-01-21 17:17:57 +08:00   ❤️ 1
    @enchilada2020 接口变化首先修改定义,需要修改的地方就会自己跳出来了。。。多方便
    3dwelcome
        23
    3dwelcome  
       2022-01-21 17:21:14 +08:00
    @sphawkcn 以前写其他语言,为了加深记忆,多打几个英文字母,留下来的习惯。

    早期差错都是依赖编译器,如果是写 JS/TS ,还是有必要打开的。
    qzhai
        24
    qzhai  
       2022-01-21 17:28:12 +08:00
    我觉得还是看 这个项目经手的人有多少,超过 2 个用没问题的。。但前提是要遵守规范,如果都是 any 走天下 意义不大
    alsotang
        25
    alsotang  
       2022-01-21 17:47:32 +08:00
    不用的话,不敢重构。ts 能在编译期暴露 js 在运行时才会暴露的错误。
    yuuko
        26
    yuuko  
       2022-01-21 17:56:31 +08:00
    逃不过真香定律
    DrakeXiang
        27
    DrakeXiang  
       2022-01-21 18:37:05 +08:00
    这东西对个人来说就是体验的问题,ts 的类型校验能防止 bug 和 typo ,智能提示对记不住变量或者方法名的我简直无法离开,重构或者 debug 的时候 ts 的项目找引用更容易,比搜索好用得多,还能一键重命名变量方法名。最近几年工作的项目都是 ts ,偶尔用 js 写个 demo ,连变量重名了都不报,typo 也不报。等你习惯了 ts 带来的好处,脱离之后就会感到不适,不是说不能写,但写起来就难受
    zhangshine
        28
    zhangshine  
       2022-01-21 18:44:39 +08:00
    用了都说好
    otakustay
        29
    otakustay  
       2022-01-21 19:08:40 +08:00
    @murmur #13 这种时候写定义才是节约生命,接口改了直接改完最外层的类型,tsc 一路改报错,改完报错放心提代码睡大觉
    cgb1021
        30
    cgb1021  
       2022-01-21 20:48:53 +08:00
    @murmur 老大在哪个厂
    yyfearth
        31
    yyfearth  
       2022-01-22 05:36:56 +08:00
    小项目 个人项目完全没必要
    但是大项目 需要多人合作的项目 有 Type 会明显降低 bug 几率和沟通文档的成本
    srlp
        32
    srlp  
       2022-01-22 12:14:36 +08:00
    typescript 的成本无非这几类:

    1. 学习成本
    都 2022 年了,前端工作者 / nodejs 工作者几乎必然需要学习这个。
    个人项目练练手,正好为大型项目做心理准备。有任意“带类型编程语言( c++、java 、...)”经验的人,应该都可以较快上手。

    2. 编译成本
    小型项目一个 tsc 走天下,没看出有什么编译成本。
    大型项目上 esbuild ,rollup ,webpack ,也不差多一道 typescript 编译的工序。

    3. 编写成本
    增加了很多 type ,interface 定义

    4. 选择第三方库时候需要找有 d.ts 支持。
    现在很多都有自带或者第三方类型支持了,问题不大吧。

    收益:

    1. 运行时错误提前到编译期暴露,踩过坑的都说真香
    2. 智能提示。别人的接口,即使没有注释,看类型定义也能连猜带蒙略知一二。
    3. 连带的,重构之类的多了一重保障,楼上一位哥们说接口类型变来变去,本人认为更需要带类型了,每次类型一变,编辑器相关地方全都标红,改完问题就心里有底。没有类型的话,只能人肉追溯代码调用链,或者 ctrl+F ,如何保证该改的地方都改了 ?

    就本人实践而言,收益远大于成本。
    jones2000
        33
    jones2000  
       2022-01-22 18:11:40 +08:00
    不用 typescript ,js 本来就是开放式的编程,天马行空, 想怎么写就怎么写, 没有强制变量类型。 记事本+chrome F12 就可以搞完的事。最麻烦的就是编译, 搞的跟 c++,java 一样, 图个省事才用 js 写, 搞的太麻烦了。
    bzw875
        34
    bzw875  
       2022-01-22 22:33:52 +08:00
    不是必须,我在写的项目因为某些条件使用不了 typescript 。写是还可以写,就是感觉没有 typescript 比较难受,看不了参数类型,数据类型,引入库的参数类型。很不方便,效率下降得厉害
    msg7086
        35
    msg7086  
       2022-01-23 02:55:45 +08:00 via Android
    我喜欢写 coffee 。再加上 ts 双击会用视频播放器打开……
    enchilada2020
        36
    enchilada2020  
       2022-01-23 12:30:32 +08:00 via Android
    @msg7086 哈哈哈哈笑死
    mikulch
        37
    mikulch  
       2022-01-27 21:33:58 +08:00
    @srlp 说实话,ts 的各种框架的源码真的非常难读。是真的非常难读,写得非常的复杂。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1613 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:58 · PVG 00:58 · LAX 08:58 · JFK 11:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.