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

typescript 真的好用吗?

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

    楼主接触 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
    香!
    galikeoy
        56
    galikeoy  
       2020-03-27 16:46:09 +08:00
    ts ?啥子东西哦,这么麻烦。
    galikeoy
        57
    galikeoy  
       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 的。
    huiyifyj
        60
    huiyifyj  
       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   ·   实用小工具   ·   5244 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 05:43 · PVG 13:43 · LAX 21:43 · JFK 00:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.