typescript 真的好用吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hxgdzyuyi
V2EX    Node.js

typescript 真的好用吗?

  •  
  •   hxgdzyuyi 2020-03-27 09:48:26 +08:00 15489 次点击
    这是一个创建于 2025 天前的主题,其中的信息可能已经有所发展或是发生改变。

    楼主接触 js 十多年了。 之前也写过 flash 的 actionscript3 。目前还没有用过 typescript,感觉 typescript 主要是加了一个类型系统。

    当时在真实工程环境里头不会麻烦吗,感觉代码阅读的难度和写起来都更麻烦了。

    不知道实际操作过的人会觉得好用吗,不会影响开发效率吗。

    84 条回复    2023-09-10 16:50:34 +08:00
    hxgdzyuyi
        1
    hxgdzyuyi  
    OP
       2020-03-27 09:48:56 +08:00
    当时 -> 但是
    wjj5728
        2
    wjj5728  
       2020-03-27 09:50:56 +08:00
    好用? -> 真香
    yaphets666
        3
    yaphets666  
       2020-03-27 09:51:00 +08:00
    我觉得看团队 小团队没必要 但是大团队也没必要 只是大团队才能从中获得到一些好处
    will0404
        4
    will0404  
       2020-03-27 09:54:46 +08:00 via iPhone   7
    debug 的时候,你是怎么检查一个对象的?想要看看它里面的方法,属性,是不是只能 console 出来?或者打断点?无论怎么样都要运行时浏览器里看是不是?有了类型,在编辑器里就知道它是个什么玩意,这就是类型带来的最本质的快乐,你说它香不香。
    vimsucks
        5
    vimsucks  
       2020-03-27 09:55:27 +08:00   1
    代码补全很香啊,再也不怕打错字了。。。
    InkStone
        6
    InkStone  
       2020-03-27 09:55:29 +08:00
    加上类型系统明明是读起来和写起来都更简单了。

    反正调试起来有代码映射,编译运行基本也是透明的。
    whitehack
        7
    whitehack  
       2020-03-27 09:55:59 +08:00
    真好用!再也回不去 js 了
    sxd
        8
    sxd  
       2020-03-27 10:03:38 +08:00
    你都写过 as3, ts 还用学么?
    llb123
        9
    llb123  
       2020-03-27 10:04:07 +08:00
    读起来简单了+1
    optional
        10
    optional  
       2020-03-27 10:06:18 +08:00
    真香系列
    blodside
        11
    blodside  
       2020-03-27 10:12:35 +08:00 via Android
    适度用 any 的话就不麻烦很爽,如果是强迫症都要整上类型就不爽了
    zhjie
        12
    zhjie  
       2020-03-27 10:21:01 +08:00
    @will0404 #4 那是写 node 香,写前端臭。
    TomeWong
        13
    TomeWong  
       2020-03-27 10:23:52 +08:00
    最近的一个项目中使用的 Typescript,加了很多类型题型,还是很有帮助的
    sherryqueen
        14
    sherryqueen  
       2020-03-27 10:24:07 +08:00
    自动提示很爽哇. 维护起来也方便
    backrunner
        15
    backrunner  
       2020-03-27 10:26:54 +08:00
    写后端必备吧,前端不见得一定爽
    tolking
        16
    tolking  
       2020-03-27 10:28:43 +08:00
    自从用了 typescript 感觉少写了好多 bug
    hxgdzyuyi
        17
    hxgdzyuyi  
    OP
       2020-03-27 10:33:24 +08:00
    @backrunner 这么一总结有道理。
    across
        18
    across  
       2020-03-27 10:34:32 +08:00
    麻烦?
    习惯 C++/C#,写 js 的时候,没有类型总觉得心理没底,感觉流程没有保障,像 C#那样,隐性类型转换都报 error 我才放心
    lewinlan
        19
    lewinlan  
       2020-03-27 10:35:08 +08:00 via Android   2
    恕我偏激。不用 ts 的都应该去枪毙。
    这段时间看别人写的 vue 代码简直想吐。
    神奇的 js 语法 xjb 乱写你是爽了,别人痛苦了。
    rockcat
        20
    rockcat  
       2020-03-27 10:40:34 +08:00
    语言本身没毛病,就看生态了。微软一贯的风格。
    hxgdzyuyi
        21
    hxgdzyuyi  
    OP
       2020-03-27 10:41:07 +08:00
    @rockcat 这和生态关系不大吧, 两边生态是通用的。
    Woodywuuu
        22
    Woodywuuu  
       2020-03-27 10:41:37 +08:00
    好用是好用,但是你架不住喜欢 anyscript 的人
    aabbcc112233
        23
    aabbcc112233  
       2020-03-27 10:41:54 +08:00 via Android
    接触 js 十多年了,没接触过静态类型语言吗?
    otakustay
        24
    otakustay  
       2020-03-27 10:51:45 +08:00
    不好用,但实用
    hxgdzyuyi
        25
    hxgdzyuyi  
    OP
       2020-03-27 10:53:30 +08:00
    @aabbcc112233 说这话没意义,就像在说设计 js 语言的人没接触过静态类型语言一样。
    minglanyu
        26
    minglanyu  
       2020-03-27 10:53:30 +08:00
    @Woodywuuu anyscript 还行
    TangMonk
        27
    TangMonk  
       2020-03-27 11:03:40 +08:00   2
    用过 C#, Java 之类的语言就不会这么说了
    hjdtl
        28
    hjdtl  
       2020-03-27 11:04:15 +08:00
    @vimsucks 代码补全是编辑器的功能
    aabbcc112233
        29
    aabbcc112233  
       2020-03-27 11:11:38 +08:00 via Android
    @TangMonk 显然没有深刻体验过。
    ZZITE
        30
    ZZITE  
       2020-03-27 11:28:28 +08:00
    一开始写起来麻烦是肯定的,影响开发效率也是会的。但是读起来我觉得是很香的,尤其在团队协作时看别人的代码要比看 js 容易了。
    InkStone
        31
    InkStone  
       2020-03-27 11:46:46 +08:00
    @hjdtl 静态类型语言的代码补全远超动态类型。补全插件再强也弥补不了这里的差距
    icyalala
        32
    icyalala  
       2020-03-27 11:50:42 +08:00
    我之前一直在写强类型语言的代码,写 JS 时每次都提心吊胆
    TS 让我重拾信心
    otakustay
        33
    otakustay  
       2020-03-27 11:53:49 +08:00
    @hjdtl 没有类型编辑器顶多补补函数参数了
    geshansuiyue
        34
    geshansuiyue  
       2020-03-27 11:55:26 +08:00
    所以有人说过,新手用 ts 就是加个类型 ,其实还有挺多好用的东西比如装饰器之类的。
    toma77
        35
    toma77  
       2020-03-27 12:00:23 +08:00
    反正我 React 和 Node 统一 TS
    Soulike
        36
    Soulike  
       2020-03-27 12:02:01 +08:00
    TS 能把错误拦截在编译阶段而不是运行阶段,这就是最大的意义
    g00001
        37
    g00001  
       2020-03-27 12:03:04 +08:00
    typescript 即保留了动态语言轻便灵活的优势,又解决了动态语言散漫难以控制的缺陷,
    在类型化上的小小付出并不算什么( 玩进去里面很多东西会非常有趣 )。
    hdr01
        38
    hdr01  
       2020-03-27 12:04:40 +08:00
    @otakustay 抓住灰大
    raymanr
        39
    raymanr  
       2020-03-27 12:13:27 +08:00
    居然对 ts 都是一致的好评? 可能是我没做过啥大项目吧, C# 出来玩了几年, 已经完全习惯动态语言了, 类型什么不存在的...
    fengbjhqs
        40
    fengbjhqs  
       2020-03-27 12:15:30 +08:00
    如果没有 vscode 的推,也不可能也不会香的这么快,

    写起来的确麻烦, 但维护真香,特别是维护别人的代码,js 的引用特性,有时候真的不好猜这个对象到底有啥子数据,

    当然如果你只用 ts 的 any,当我没说
    yngzij
        41
    yngzij  
       2020-03-27 12:16:07 +08:00
    ===0
    ==0
    ==='0'
    =='0'
    onecode
        42
    onecode  
       2020-03-27 12:23:37 +08:00
    @yngzij 这个很秀
    SilentDepth
        43
    SilentDepth  
       2020-03-27 12:32:48 +08:00
    个人感受:在开发基于特定数据结构的项目时真希望写的是 TS,一来代码提示更高效,二来光靠变量名辨别预期的数据类型是不够的,此时加上类型标注或提示会好很多。另外,类型关联完善的情况下,重构也痛快得多。

    阅读难度和编写麻烦度都跟类型完善度有关。类型完善了,读起来和写起来跟 JS 没大差别(除了必要的类型声明和转换,大部分类型都被隐式推到了,编写时不必关心),而且 TS 引入的一些新特性反而有助于提高可读性。当然如果类型不完善就另说了。

    我觉得 TS 目前的问题是相关工具生态还不够成熟,准入门槛还不够低。过去一年 TS 在这方面有明显的进步,但还没达到可以让 JS 社区轻易接受的程度。(虽然也许不是 TS 的问题。)
    jin5354
        44
    jin5354  
       2020-03-27 12:56:58 +08:00
    不好用,你要是真仔细写 ts 就知道,ts 现在的缺陷还太多,智能程度也不够,太多地方推导不出来要自己写 hack 。
    可读性也是一个问题,有的函数声明加上类型声明可能超过一行,又长又复杂,看的人眼都瞎了。

    但是必须用,因为类型检查太重要了。
    Mark24
        45
    Mark24  
       2020-03-27 12:59:56 +08:00
    不好用

    很多人是为了用而用
    KuroNekoFan
        46
    KuroNekoFan  
       2020-03-27 13:01:42 +08:00
    用了一段时间
    最大的问题是 tsserver 经常出问题
    另外就是结合 react-redux 的范式模板会使得改动变得异常繁琐
    yafoo
        47
    yafoo  
       2020-03-27 13:08:17 +08:00 via Android   12
    那么多年一直用记事本写代码的人,表示坚决不用 ts 。
    本来动态可变类型是 js 和 php 的特性和优点,就因为现在部分.net java 程序员参与了进来,硬生生给改成强类型语言了,严重破坏 js 生态系统。
    记得前几年有次跟.net 后端对接接口,有个字符串需要拼接处理一下,弄了半天他愣是搞不定,因为他那数据结构定死了,就那样,不能动。
    还有就是编译,本人坚决反对编译,现在每次修改程序,改个字符都要重新编译。
    喜欢 ts 的,建议直接去写 java 或者 c 程序。
    喜欢 js 的请点赞,喜欢 ts 的请忽略本条评论,哈哈!
    AmiKara
        48
    AmiKara  
       2020-03-27 13:33:08 +08:00
    ts 有 java 的味道,感觉写起来逻辑比 js 更加清晰,但是代码量会比 js 大很多,新人玩个人项目的时候建议用 js,不然你用 ts 只会用成 anyscript
    yaphets666
        49
    yaphets666  
       2020-03-27 13:42:11 +08:00
    @lewinlan 确实偏激了兄弟 你看 TS 推广不开你就明白怎么回事了 VUE 是能写出可读性最高代码的前端框架了
    Yiki
        50
    Yiki  
       2020-03-27 15:29:39 +08:00
    ……学过 java 对 TS 很容易上手就是了
    纯 JS 不觉得很烦躁吗……
    JerryCha
        51
    JerryCha  
       2020-03-27 15:31:12 +08:00
    没有类型,心里总有根弦绷着,担心类型不对出错
    mitu9527
        52
    mitu9527  
       2020-03-27 15:32:33 +08:00
    以前有一门编程语言叫 Javascript,后来微软借 ie 参与竞争搞了个山寨版的“js”,从此前端工程师的痛苦开始了,也让 web 前端的发展停滞了将近十年。chrome 好不容易挽回了局面,微软又杀回来了,虽然这次是在更高层面上切入,但混乱又开始了。试想一下,如果真的越来越多的前端开始依赖强类型,那么 js 势必会引入一套自己的方案,届时会会更混乱。历史的轮回从来没听过,哎。
    mitu9527
        53
    mitu9527  
       2020-03-27 15:36:58 +08:00
    个人预计,js 目前这个小修小补的阶段就快结束了,很快就会像当年 ecmascript 4 一样引入强类型了,届时更混乱。再加上 web 汇编的引入,前端又会乱成一锅粥。
    hantsy
        54
    hantsy  
       2020-03-27 15:52:22 +08:00
    用于后端开发人员,TS 很亲切,ES 5 毫无章法,要人命,ES 6 勉强能用。
    zpm683
        55
    zpm683  
       2020-03-27 15:57:41 +08:00
    香!
    dfourc
        56
    dfourc  
       2020-03-27 16:46:09 +08:00
    ts ?啥子东西哦,这么麻烦。
    dfourc
        57
    dfourc  
       2020-03-27 16:46:48 +08:00
    @galikeoy #56 几天后:真香!!!
    ansenJ
        58
    ansenJ  
       2020-03-27 16:55:20 +08:00
    小公司用 TS 的话 一个好的产品经理是你的门槛....
    stabc
        59
    stabc  
       2020-03-27 17:01:38 +08:00
    个人项目。尝试过用 TS,最后放弃了,主要原因是灵活性不够。而且类型检查只约束程序员,不约束用户输入,处理用户输入时需要额外再写一套检查。
    团队项目的话我倒是推荐 TS 的。
    fengyj
        60
    fengyj  
       2020-03-27 17:09:45 +08:00
    确实是真香。但是...当团队要求禁止使用 any 类型,就会有点不太香。
    hurrytospring
        61
    hurrytospring  
       2020-03-27 17:10:29 +08:00
    香,不想多说。
    marcong95
        62
    marcong95  
       2020-03-27 17:18:35 +08:00
    个人而言几乎没用过静态类型语言做大项目,公司之前某个项目试了一下 TS,一开始我还很坚持写类型定义啥的,然而做着做着似乎就变成了 anyscript 了。。

    毕竟 npm install 是 JS 的包,就算有.d.ts 也难以避免有些地方的返回值是个 any,然后又变回 anyscript 了
    slert
        63
    slert  
       2020-03-27 18:05:04 +08:00
    我觉得不用写类型很爽。很多项目并不那么需要 ts,为了 ts 而 ts 的话,也许引入的麻烦比解决的问题多。
    magicdawn
        64
    magicdawn  
       2020-03-27 18:15:20 +08:00
    不用 TS, 当你的项目因为是 js 带来很多 bug 的时候, 说明你需要 TS 了
    yiqidaoshan
        65
    yiqidaoshan  
       2020-03-27 19:00:49 +08:00   1
    好处是防止有些人自由飞翔,坏处是你不能自由飞翔了
    rbe
        66
    rbe  
       2020-03-27 19:37:32 +08:00
    @stabc #59 约束程序员就是 ts 最大的意义呀,任何语言写接口都需要自己处理用户输入。写一个 function 给别人用,别人在敲下方法名时就知道参数和返回值的 "shape", 乱传会编译不过这非常好。
    Tokin
        67
    Tokin  
       2020-03-27 19:55:29 +08:00
    初次写因为有些时候要自己定义类型挺麻烦的,但是事后隔了一段时间再读代码,感觉真的很舒服。
    wi
        68
    wi  
       2020-03-27 20:50:56 +08:00   4
    看了评论,弱鸡太多,不写 Ts,去写 Js,活该你写 Js 。Ts 是挡不住的,Js 纵容那些白痴写代码,到后来还是用 Ts 重写,你可以现在不学,但是你也挡不住 Ts,门槛就是要提高。
    OHyn
        69
    OHyn  
       2020-03-27 20:52:37 +08:00
    提高代码质量的下限。。。
    yafoo
        70
    yafoo  
       2020-03-27 21:13:36 +08:00 via Android   2
    @wi 难道不是太弱鸡,驾驭不了 js,所以才用 ts 遮羞一下?
    说 bug 多的,那是能力不行,写不出好的代码。
    就跟驾驭不了手动挡汽车一样,也就只能开开自动挡的。

    纯属抬杠,
    CuVee
        71
    CuVee  
       2020-03-27 21:41:18 +08:00
    不好用,写 node 可以,写前端除了代码可读性提升了,其他方面没卵用
    justin2018
        72
    justin2018  
       2020-03-27 21:45:32 +08:00
    代码补全 真香~~
    civet
        73
    civet  
       2020-03-28 00:11:00 +08:00 via iPhone   1
    说白了 TS 其实就是微软想将 JS 进行 C#化,越看这个语言的版本更新就越明显。写 JS 用上了 ES6,习惯了函数式编程之后又是另一番体验,TS 未必要用上。目前 TS 的特性已经比上几版本复杂太多了,不断复制 C#特性最终会导致过度设计
    xcstream
        74
    xcstream  
       2020-03-28 00:18:02 +08:00
    用 js 写也不会遇到什么难以解决的 bug
    tourist2018
        75
    tourist2018  
       2020-03-28 08:27:57 +08:00
    我觉得 ts 看起来已经比 js 舒服啊 有类型系统不管自己写代码还是 debug 都舒服多了
    tikazyq
        76
    tikazyq  
       2020-03-28 09:12:45 +08:00
    ts 不管是可读性还是可维护性都远超原生 js
    gaojiren
        77
    gaojiren  
       2020-03-28 11:35:08 +08:00
    ts 真香,用了根本回不去,写起来和 C#一样行云流水
    noobma
        78
    noobma  
       2020-03-28 13:34:54 +08:00
    肯定推荐 ts 啊,比如有一个对象,后来你需要增加字段、删除字段、修改字段类型,用 js 的话,要自己手动一个个的找到使用的地方去做对应的修改;用 ts 的话,在 interface 那里改一下,等着编译报错,到对应的报错的文件里面,结合 webstorm 的 fn + f2 跳转到下一个错误去修改,直到编译不报错,这样产生 bug 的几率会更小一些吧
    noobma
        79
    noobma  
       2020-03-28 13:38:06 +08:00
    我以前也是觉得用啥 ts,我用 js 还不是一样搞得定,徒增负担罢了。用了 ts 后,再去接手别人的 js 项目,真的会产生抵触心理
    codelegant
        80
    codelegant  
       2020-03-28 13:53:35 +08:00 via iPhone
    @noobma 你这个应该用 WebStorm 的重构(refactor)功能,自动搜索所有引用并改名。
    noobma
        81
    noobma  
       2020-03-28 15:21:26 +08:00
    @codelegant 改名和我说的是一回事吗?
    wi
        82
    wi  
       2020-03-28 22:05:54 +08:00
    说 Ts 像 Java 、C# 的感觉是不能明白:为什么 Ts 是 Js 的超集,知道 keyof 怎么用吗,知道联合类型和交叉类型吗。Ts 的类型系统不是 Java 、C# 能比的,Ts 可以说很强大,可以描述 Js 的很多东西。
    hc181533609
        83
    hc181533609  
       2020-03-29 06:08:13 +08:00 via Android   3
    看看评论,很感慨,只想说点非技术性评论,中间有一群人,都是个代码狗而已,哪来的这么多优越感呢,一上来鄙视这个鄙视那个,都是穷逼一个丝居多,写代码还写出优越感,足见劣根性。哪有什么喜欢呢,都是为了利益,有经济有享受鄙视的快感,总之都是蠢,自己团架构不行,或者自己技术菜,怪到语言的头上,存在即合理,一门语言将近三十年的历程,还没消失在历史长河中,就足见强大性,也没见那些大神鄙视这个鄙视那个的,说的难听点,都是些 gb 在鄙视人,做人要学会谦逊心存敬畏,都是代码狗居多,穷逼居多,也要比比?合着就你能了?真的是劣根难除?有人觉得看着刺眼,可以举报。
    hxgdzyuyi
        84
    hxgdzyuyi  
    OP
       2023-09-10 16:50:34 +08:00
    DHH 在自己的项目里头去掉了 TypesScript
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2582 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 04:48 PVG 12:48 LAX 21:48 JFK 00:48
    Do have faith in what you're doing.
    ubao 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