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

TypeScript 真的是必须的吗?

  •  
  •   zzlatan · 125 天前 · 2460 次点击
    这是一个创建于 125 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    早期差错都是依赖编译器,如果是写 JS/TS ,还是有必要打开的。
    qzhai
        24
    qzhai  
       125 天前
    我觉得还是看 这个项目经手的人有多少,超过 2 个用没问题的。。但前提是要遵守规范,如果都是 any 走天下 意义不大
    alsotang
        25
    alsotang  
       125 天前
    不用的话,不敢重构。ts 能在编译期暴露 js 在运行时才会暴露的错误。
    yuuko
        26
    yuuko  
       125 天前
    逃不过真香定律
    DrakeXiang
        27
    DrakeXiang  
       125 天前
    这东西对个人来说就是体验的问题,ts 的类型校验能防止 bug 和 typo ,智能提示对记不住变量或者方法名的我简直无法离开,重构或者 debug 的时候 ts 的项目找引用更容易,比搜索好用得多,还能一键重命名变量方法名。最近几年工作的项目都是 ts ,偶尔用 js 写个 demo ,连变量重名了都不报,typo 也不报。等你习惯了 ts 带来的好处,脱离之后就会感到不适,不是说不能写,但写起来就难受
    zhangshine
        28
    zhangshine  
       125 天前
    用了都说好
    otakustay
        29
    otakustay  
       125 天前
    @murmur #13 这种时候写定义才是节约生命,接口改了直接改完最外层的类型,tsc 一路改报错,改完报错放心提代码睡大觉
    cgb1021
        30
    cgb1021  
       125 天前
    @murmur 老大在哪个厂
    yyfearth
        31
    yyfearth  
       125 天前
    小项目 个人项目完全没必要
    但是大项目 需要多人合作的项目 有 Type 会明显降低 bug 几率和沟通文档的成本
    srlp
        32
    srlp  
       124 天前
    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  
       124 天前
    不用 typescript ,js 本来就是开放式的编程,天马行空, 想怎么写就怎么写, 没有强制变量类型。 记事本+chrome F12 就可以搞完的事。最麻烦的就是编译, 搞的跟 c++,java 一样, 图个省事才用 js 写, 搞的太麻烦了。
    bzw875
        34
    bzw875  
       124 天前
    不是必须,我在写的项目因为某些条件使用不了 typescript 。写是还可以写,就是感觉没有 typescript 比较难受,看不了参数类型,数据类型,引入库的参数类型。很不方便,效率下降得厉害
    msg7086
        35
    msg7086  
       124 天前 via Android
    我喜欢写 coffee 。再加上 ts 双击会用视频播放器打开……
    enchilada2020
        36
    enchilada2020  
       123 天前 via Android
    @msg7086 哈哈哈哈笑死
    mikulch
        37
    mikulch  
       119 天前
    @srlp 说实话,ts 的各种框架的源码真的非常难读。是真的非常难读,写得非常的复杂。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1579 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:58 · PVG 07:58 · LAX 16:58 · JFK 19:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.