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

DHH 移除 TypeScript 后的反静态类型主义营销号刷屏有点让人绷不住

  •  1
     
  •   netabare · 2023-10-15 06:40:12 +08:00 · 4890 次点击
    这是一个创建于 403 天前的主题,其中的信息可能已经有所发展或是发生改变。

    尤其是过了这么久还能看到这些营销号,然后评论区大家都在集火喷 TypeScript 。

    实在是不懂为啥静态类型会惹来这么多人厌恶,更不用提这个 PR 还有个更严重的问题 - 在多人协作的项目里直接 force push 了。

    本来还想写点啥吐槽一下,然后感觉累觉不爱,只能说这位社区领袖直接把 Ruby 这个语言对我的吸引力拉到近乎于 0 的状态。

    顺便引用一下一个算得上是爆典的修改:

    68    | async function gotoPageWithFormMode(page: Page, formMode: "on" | "off" | "optin") {
       68 | async function gotoPageWithFormMode(page, formMode) {
    

    用户获得了在formMode里传入 null 、undefined 、114 、5.14 、"1919"和new Date()的自由。

    64 条回复    2023-10-18 01:13:22 +08:00
    cmdOptionKana
        1
    cmdOptionKana  
       2023-10-15 08:55:03 +08:00   ❤️ 9
    你对营销号很无奈,我对你因为营销号而迁怒 Ruby 也很无奈。

    一方面我理解很多人不爱讲道理,喜欢让情绪胡乱蔓延,比如报喜讯的信使获得奖赏,报坏消息的信使被砍头,但人家信使是无辜的啊;同时欲加之罪何患无辞,你也可能本来就讨厌 Ruby ,或者人家移除 TypeScript 的时候你就已经生气了,现在说什么“营销号刷屏”导致你讨厌 Ruby ,搞得好像“营销号刷屏”是主要原因似的,但这也可能只是借口而已。这些我都理解,但我也很无奈,为什么不能理性一点讲逻辑讲道理呢。
    beginor
        2
    beginor  
       2023-10-15 10:17:04 +08:00 via Android
    three.js 移除官方 ts 支持时候很多人也觉得挺无奈的
    jry
        3
    jry  
       2023-10-15 10:26:02 +08:00   ❤️ 1
    静态类型没问题,厌恶的不是静态类型,而是不友好的语法带来的开发成本、理解成本、心智压力,TypeScript 这种语法我感觉有点怪异,乍一看不是很直观。比如 let name:string = '',如果是更符合常规静态语言习惯的 string name = '' 就好了。不过可能作者考虑到 js/ts 混编、迁移等场景,let 开头这样更方便吧。刚看了眼苹果 swift 语法,发现居然引入了 js 的 var/let 这种动态类型,说明这种便捷的方式接受度高。从 objctive-c 到 swift 实际上也变成了强制静态类型到可选动态类型。对比近日 vue3.4 会取消实验性特性语法糖$ref ,看了原因解释我也很理解,在看原因之前我觉得语法糖真方便,看了取消的原因发现确实很有道理。
    crysislinux
        4
    crysislinux  
       2023-10-15 10:28:53 +08:00 via Android   ❤️ 1
    @jry 那完蛋了。现在类型在后就是趋势,你可以去查查这种方式的好处在哪儿,相关资料已经很多了。
    jry
        5
    jry  
       2023-10-15 10:30:01 +08:00
    @crysislinux 我主要做前端和 PHP ,动态类型用得多,静态接触少一些哈哈。没怎么关注。
    jry
        6
    jry  
       2023-10-15 10:31:55 +08:00
    @crysislinux 变量定义只是举例,除了这个整个 TS 的语法我都不是很喜欢。
    liberty1900
        7
    liberty1900  
       2023-10-15 10:39:02 +08:00
    他可能只需要 TS 的一个很小的子集,不喜欢类型体操那些东西

    JS 好像有提案要原生支持类型注解,到时候 TS 的位置一定很尴尬。如果是为了长远考虑去除 TS 其实是能够理解的

    不仅仅是他,Svelte 的作者 Rich Harris 在重构 Svelte 代码库的过程中也用 JSDoc 取代了 TS
    jry
        8
    jry  
       2023-10-15 10:43:03 +08:00
    @liberty1900 js 原生支持类型就好了,支持。
    Mark24
        9
    Mark24  
       2023-10-15 10:54:16 +08:00   ❤️ 6
    静态型其实是一种倒退。

    你写逻辑为什么要关心机器底层的实现细节?

    就像你使用 ChatGPT ,你还必须整理清楚 每句话说的东西的变量?

    这些细节都应该被抽象层屏蔽掉


    之所以这种东西反复摇摆,静态型只对机器有利,大量使用对于机器优化的 feature ,说明机器又比人贵了。
    ericgui
        10
    ericgui  
       2023-10-15 10:57:32 +08:00
    静态类型确实有价值
    但 typescript 其实一直我都用不太好,因为有一些诡异的类型错误,你就不容易 debug
    makelove
        11
    makelove  
       2023-10-15 11:01:15 +08:00   ❤️ 8
    @Mark24 真 tm 神论,那你变量也随便 abcd 得了,没必要想个意义出来
    dw2693734d
        12
    dw2693734d  
       2023-10-15 11:07:01 +08:00
    静态类型好点
    butanediol2d
        13
    butanediol2d  
       2023-10-15 11:15:06 +08:00
    @jry #3 Swift 的 var/let 跟 JavaScript 的完全不是一个意思。而且 Swift 是非常强静态类型的语言。
    mxalbert1996
        14
    mxalbert1996  
       2023-10-15 11:20:20 +08:00 via Android
    @jry let/var 就动态类型了那说明你没理解什么是动态类型。那只是自动类型推断。
    angrylid
        15
    angrylid  
       2023-10-15 11:23:36 +08:00   ❤️ 8
    前端程序员的至暗时刻:
    10 , 别人发布的 npm 包没有 d.ts
    9 ,给自己发布的 npm 包写 d.ts

    楼下补充
    agagega
        16
    agagega  
       2023-10-15 11:30:40 +08:00   ❤️ 11
    DHH 对前端社区的抨击可远不止静态类型这一个:反对微服务、反对上云、反对 SPA 、反对 WebPack 、反对前端渲染,推 Turbolinks 、推 Stimulus 、推 HTML over WebSocket. 以前 Rails 社区普遍对 EmberJS 有好感,这个框架一大卖点就是纯 JavaScript.

    这里是他在今年 Rails World 大会上的演讲:
    不针对 TypeScript 这件事情,只能说 DHH 这个人虽然有些偏执,但他的这套解决方案对某些开发者的确比目前所谓的「主流」方案更合适。

    另外 Ruby 社区对整个 Web 开发领域的贡献可能比人们想象的大。Sass 的最初版本是 Ruby 写的,各种 env 管理工具的始祖就是 rbenv ,没记错的话主流语言包管理器里最早有 lockfile 概念的也是 Ruby 的 Bundler ,Rails 对 REST 和 12-factor apps 的贯彻到现在很多框架都没做到,而引入前端编译工具是在 2011 年。

    GitHub (至今也是一个 Rails 应用)最早就是 Rails 圈子出来的,所以很长时间里 GitHub 项目最多的语言是 JavaScript 、Ruby 、Objective-C (那会要做 iOS 和 Web ,全栈三语言)。DHH 最早给 Rails 做的演示视频用的是 Mac ,那会还在 PowerPC 时代,苹果甚至找 DHH 拍过商务宣传片( https://twitter.com/dhh/status/1329062154151063552 ),那会只有很少的开发者用 Mac ,这对后来 Mac 的流行多少有点影响
    TWorldIsNButThis
        17
    TWorldIsNButThis  
       2023-10-15 11:34:01 +08:00 via iPhone   ❤️ 1
    @liberty1900
    尴尬什么,js 的类型提案就是做 ts 的人提的😅
    Mark24
        18
    Mark24  
       2023-10-15 11:39:18 +08:00
    @makelove ts 出来之前,ts 出来之间,大家不写程序么。

    TS 只是加个 type 而已。TS 出现之前,很多类型注释工具都可以更好的,无入侵解决这个问题。
    kongkongye
        19
    kongkongye  
       2023-10-15 11:49:29 +08:00 via iPhone   ❤️ 1
    没有类型定义是很可怕的,就像 java 里用 map 传参一样,你根本不知道里面可能有哪些键,只能看文档,自动提示也没了
    xrr2016
        20
    xrr2016  
       2023-10-15 11:59:20 +08:00
    因为写 typescript 确实烦人
    Bluecoda
        21
    Bluecoda  
       2023-10-15 12:02:36 +08:00
    @agagega DHH 本质上他是半个 business guy ,他的第一要务是把好产品做出来,成本是最需要去考虑的事情。我觉得 Rails 的 turbo 真的是太好用了,用过一次就知道,如果只是小团队,小而美的产品,前后端分离就是累赘,turbo 把很多事情都变得非常简单。我曾经把一个 2 前端+3 后端前后端分离的 react 项目,用了 turbo 之后,只需要 1 前端+1 后端就基本替代了,并且达到了类似 SPA 的效果。对于他这样的 business guy 来说,简单,易用,方便,节省人力才是第一要务。
    我不是说前后端分离是错的,而是对于某些产品来说,前后端分离可能真的不是一个最优解,现在的有些人逢项目必前后端分离真的有点像是邪教。
    Bluecoda
        22
    Bluecoda  
       2023-10-15 12:09:17 +08:00   ❤️ 1
    对于类型,我一直不觉得这东西有多好,如果在一个程度上我可以减少代码,但是 bug 并没有增加,那为什么需要这个类型系统?大量的代码维护,心智负担,我不觉得我需要去承担这些。
    DHH 早年也说过,去查过 github 很多静态类型语言的项目,他们的 bug 数量并不会因此减少,所以引入了大量成本,但是 bug 并没有因此减少,这个成本带来的价值在哪里?只是某些类型 fans 的自我满足吗?
    我自己用也是这样的感觉,就像 ruby 的类型系统,看到都不想用,引入的成本实在是太高了,这东西可能对一些超大型项目有一些价值,但是并不是每个人都能碰到这类型的项目,1w 行都对我来说都是大项目了,所以我也感受不到类型有什么用。
    walpurgis
        23
    walpurgis  
       2023-10-15 12:16:57 +08:00
    确实很反智,python php 不都在推 type hint 吗,动态语言静态化是个趋势
    要是说 typescript 的设计方案有问题,写起来麻烦确实是一个合理观点,但有些人上升到反对静态化就没有讨论必要了
    oops36
        24
    oops36  
       2023-10-15 12:29:32 +08:00
    ts 对于 lib dev 和 app dev 完全是两种难度。对于 app dev 来说,ts 基本是直接用就行了,文档都不怎么要看,直接大幅提升 dx(developer experience)。但如果是 lib dev ,ts 根本就是魔鬼难度。dhh 和 svelte 虽然都删掉了 ts ,但完全不是一个性质。svelte 是用 jsdoc 取代了 ts ,类型还是有的,用 ide 的时候 dx 还是一级棒,目的是降低 svelte 本身的开发维护成本。dhh 直接删掉了类型。。。绝对是损害了 dx 。
    learningman
        25
    learningman  
       2023-10-15 13:02:17 +08:00
    这年头不都这样吗,相似观点的人抱团,很明显这种话题下就是反 ts 的抱团
    learningman
        26
    learningman  
       2023-10-15 13:03:42 +08:00
    @jry 新一点的语言不都是这个设计,rust 的 let a:Vec<X>,go 的 var a string
    wonderfulcxm
        27
    wonderfulcxm  
       2023-10-15 13:06:08 +08:00 via iPhone
    @agagega 这哥们很有意思啊
    Al0rid4l
        28
    Al0rid4l  
       2023-10-15 13:07:38 +08:00
    看了一眼 DHH, 脑子里不禁问了句 ROR 作者就这?
    Numbcoder
        29
    Numbcoder  
       2023-10-15 13:47:31 +08:00   ❤️ 11
    至少他言行一致啊,他反对的东西和推崇的东西,都在他的商业产品力得到了实践,并且能拿出统计数据,有理有据的表明他的这些决定都是有价值的。详见 #16 楼的视频。

    比如从云上搬下来,每年节省了 150 万美刀服务器费用。参考: https://shiftmag.dev/leaving-the-cloud-314/ https://world.hey.com/dhh/why-we-re-leaving-the-cloud-654b47e0

    在技术圈逐渐饭圈化的今天,很多人只会无脑的跟着混圈子,仿佛加入了这个圈子就掌握了未来,对不愿意加入圈子的人无脑诋毁。技术是为产品服务的,产品需要考虑的是效率、成本和质量。DHH 是一个典型务实型的技术人员,他的一切技术选型都是围绕产品出发,而不是为了技术人的自嗨。

    PS:DHH 从来没有反对语言静态化,只是他个人不喜欢 TypeScript ,更喜欢 JavaScript ,他也没反对你们用 TypeScript ,被他移除 TypeScript 的项目 turbo 是他们公司主导的开源项目,他们作为项目的主导方,应该有权选择自己的技术实现细节吧。如果某天微软在 TypeScript 上使用了一个你不喜欢的技术实现,你也要组织人是去网暴吗?
    Pencillll
        30
    Pencillll  
       2023-10-15 13:48:15 +08:00 via Android
    @Mark24 汽车出来之前,大家不出行么。

    汽车只是代个步而已。汽车出现之前,很多坐骑都可以更好的,无加油解决这个问题。
    Knights
        31
    Knights  
       2023-10-15 15:18:12 +08:00
    高级语言是给人类看的,引入新的语言要能降低项目生命周期内人的心智负担,不然就是扯蛋
    Leonard
        32
    Leonard  
       2023-10-15 15:20:23 +08:00
    @jry #3 Swift 的 let/var 只是类型推断,本质还是静态类型
    Aloento
        33
    Aloento  
       2023-10-15 15:21:45 +08:00
    @liberty1900 #7 原生支持类型注解 都是微软提的,TS 尴尬什么
    DOLLOR
        34
    DOLLOR  
       2023-10-15 15:38:21 +08:00   ❤️ 4
    @agagega

    DHH 或者 ruby 社区也好意思抨击 webpack ,我觉得他们圈子整的 node-sass 才是前端最大的毒瘤。
    前些年跑 npm 踩的坑,至少一半以上都是 node-sass 闹的。
    DOLLOR
        35
    DOLLOR  
       2023-10-15 15:42:41 +08:00   ❤️ 9
    @liberty1900
    讲个笑话,连 TS 都不愿写的人(大神除外),说自己愿意写更啰嗦的 JSDoc 。
    solobat
        36
    solobat  
       2023-10-15 17:05:19 +08:00   ❤️ 1
    反智而已,小丑
    netabare
        37
    netabare  
    OP
       2023-10-15 18:20:30 +08:00   ❤️ 1
    @cmdOptionKana 说实话我并不讨厌 Ruby ,甚至以前还有一些兴趣(可能因为是比较早就流行函数式写法的原因),只是说现在会觉得没太多兴趣了。

    @beginor 看了一下 three.js ,说法并不是移除 ts ,而是把 ts 支持转交给专门的团队来做,这和一个 force push 直接覆盖掉整个主线有本质上区别吧。

    @Mark24 类型是和数据建模直接相关的,这难道不是逻辑的一部分吗?静态型才能够提供类型推断,TypeScript 之所以有时候还需要写类型标注恰恰是因为 JavaScript 太灵活。

    @kongkongye 所以更不懂关于 TypeScript 的争论了,再不济写 any 也好过吧

    @oops36 对于 lib 来说删掉 TS 算是一种选择,但是按理来说删掉 lib 应该引入单元测试和文档来覆盖掉类型本应起到的作用,然后一堆人在那里抨击 TS 却对文档和测试闭口不谈……

    @DOLLOR +1
    jry
        38
    jry  
       2023-10-15 18:39:01 +08:00 via iPhone
    @Leonard 不会 swift,就看了下语法,我想表达的是它这样写代码不用显式申明类型。
    WildCat
        39
    WildCat  
       2023-10-15 18:42:24 +08:00   ❤️ 1
    FightPig
        40
    FightPig  
       2023-10-15 20:27:52 +08:00
    @DOLLOR node-sass 关 DHH 的 p 事?反智过头了
    DOLLOR
        41
    DOLLOR  
       2023-10-15 20:29:46 +08:00
    @FightPig 关 ruby 社区的事
    BeautifulSoap
        42
    BeautifulSoap  
       2023-10-15 22:23:59 +08:00 via Android   ❤️ 2
    看完这个帖子,我对一些用 js 的人真的大开眼界
    Mark24
        43
    Mark24  
       2023-10-15 22:41:57 +08:00
    @netabare 灵活不是缺点,瓶颈的问题在于人,以及人的设计。

    想通过类型想要消灭 BUG 是不可能的,也是徒劳。动态语言一开始便不提供这种幻想。

    现在之所以回到静态型

    无非就是业务开始固定,人力便宜,机器昂贵。这是老板降本增效的方向,并不是程序应该发展的方向。
    Mark24
        44
    Mark24  
       2023-10-15 22:46:03 +08:00
    @DOLLOR 你好像搞错了

    Sass 是 Ruby 社区发明创造的。

    Node-sass 是 Node 社区重新造轮子。Node 轮子造的不好,不能怪 Ruby 社区。

    Ruby 带来的先进理念,现在还被其他语言学习和模仿。
    Mark24
        45
    Mark24  
       2023-10-15 22:50:39 +08:00
    @Pencillll

    如果拿汽车发动机比喻,动态性是自动挡,静态型是手动挡。

    你的比喻弄反了。

    动态语言抽象等级更高。程序的发展方向是抽象化。
    darklinden
        46
    darklinden  
       2023-10-15 23:50:11 +08:00
    虽然写纯 js 的大神很多,但是身边统计学,嘴上排斥静态类型,手上整活儿出不可维护代码的,大部分是为了坑人稳定自己地位的...
    DOLLOR
        47
    DOLLOR  
       2023-10-16 00:28:58 +08:00
    @Mark24
    node-sass 是 sass 官方 libSass 的封装,libSass 是用 C++写的。

    如果 node 社区真要重复造轮子,肯定会选择用 js/ts 来重新实现。
    比如 less 、stylus ,这两家都是 js/node 背景,安装体验也比 sass 好。

    后来 sass 官方自己倒是重新实现了 sass 编译器,但居然是用 dart 来重做。
    所以,联想这个社区还曾经鼓捣过 coffeeScript ,我无端猜测,这个社区别说是对 TS 了,对 JS 都鄙夷。

    那些只写 JS 的开发者最好别跟风起哄,说不定他下次要移除的就是 JS 。
    Bluecoda
        48
    Bluecoda  
       2023-10-16 01:01:16 +08:00
    @Al0rid4l 是的,也就这而已,一个用 ruby 发家致富,然后把开发拿到的钱拿去开赛车比赛的男人,不会开赛车的男人不是好程序员
    cailinunix
        49
    cailinunix  
       2023-10-16 01:07:31 +08:00
    @Mark24 3202 年还有人认为静态类型描述的是底层实现?看你头像应该是个学过函数式编程的人,为什么会发表这样的爆论
    DOLLOR
        50
    DOLLOR  
       2023-10-16 01:11:47 +08:00
    @jry

    let name:string = ''这种写法是很少有的,统计过我的代码,20 个变量声明里,只有一个用写类型,其他都是自动推断。唯一需要写类型的原因,还是是 File[]这种复合类型。
    string name = ''这种写法,就不适合自动推断了。

    你可能会说 auto name = ''也可以自动推断。但是,跟 const 连用就成了 const auto name ,中间这个 auto 要不要留就又是一个争论。
    humbass
        51
    humbass  
       2023-10-16 01:50:21 +08:00
    我做外包,坚持使用 JS ,而不是 TS ,显然用人成本低很多,,周边做外包用 Java 、TS 的团队基本都死光了。
    netabare
        52
    netabare  
    OP
       2023-10-16 01:53:43 +08:00 via iPhone   ❤️ 1
    @DOLLOR 有时候显式类型标注可以起到文档和契约的作用,当然一般来说不是 string 这种简单类型而是复杂的 model 或者联合类型。

    静态类型的意义是这种写法是完全可选的,哪怕没有注解,也可以根据上下文尽可能推断出变量的类型( File[]算是少数反例了,但至少静态类型能推出个 any[]来)。

    动态类型里面完全没有这种契约关系,所以真的要把类型约束推出来的时候,还得四处添加 userland 的 type hint ,而这就是 Turbo 的用户将要面对的情况(或者完全不考虑这些写面条代码)
    mxT52CRuqR6o5
        53
    mxT52CRuqR6o5  
       2023-10-16 03:22:06 +08:00 via Android
    https://www.zhihu.com/question/623259697/answer/3223957909
    本来就不是给正经 web 前端用的框架,所以也不应该因这些项目的技术路线去评价 web 技术栈
    DOLLOR
        54
    DOLLOR  
       2023-10-16 08:04:22 +08:00 via Android
    @mxT52CRuqR6o5
    所以那些只写 JS 的程序员借这个话题抨击 TS ,还以为找到大神为自己站队似的,很可笑。
    loolac
        55
    loolac  
       2023-10-16 08:55:48 +08:00
    用的太久了,有一种类似“审美疲劳”的错觉吧。就像陈坤那些“音乐人”一样,在巅峰太久了,反而感觉大众化的内容太“俗”,“土里土气”反而是一种异样的美,就像现在的 “低代码平台” 比 visual basic 6.0 一样。
    Mark24
        56
    Mark24  
       2023-10-16 09:01:23 +08:00 via Android
    @cailinunix

    我的理解

    如果 type 在一些语言里是和底层硬件绑定的硬件细节。
    我觉得我们不需要关心。底层应该被抽象层屏蔽。

    如果 type 是抽象层的接口描述,那么其实没必要大动干戈,以前有注释工具还能生成文档。现在用一个语言来分裂整个生态,是很差的选择。一些语言提供辅助的类型注解。

    如果你觉得 type 可以消除 bug ,你会失望,这只是一个幻想。动态语言一开始就不提供这样的幻想。

    无论哪个层次,type 都没那么重要。
    horizon
        57
    horizon  
       2023-10-16 09:07:45 +08:00
    不加类型,重构的时候咋办?
    当然如果都是用完即弃的代码,当我没说。
    encro
        58
    encro  
       2023-10-16 10:02:44 +08:00
    vscode 不支持 3.7 了,
    公众号大多都报道未不支持 3.x 了。
    因此,
    我取消了几个公众号的关注。

    我现在将我的方法推荐给你。
    Cheez
        59
    Cheez  
       2023-10-16 10:43:15 +08:00
    @jry

    TypeScript 是 JavaScript 的超集,首先就要保证 JS 能在 TS 的系统里面跑起来。另外 String name = '' 也不一定就是最好的设计,都已经给出初始值了,let name = '',TS 也能推断出类型了
    charlie21
        60
    charlie21  
       2023-10-16 12:02:57 +08:00
    1 Turbo 作为 DHH 公司一个产品,DHH 公司尤其是 Turbo 开发团队是否有人因此辞职了?
    2 TypeScript 作为微软公司的一个产品,微软是否可以禁止 DHH 公司的所有项目不得使用 TypeScript ?
    chloerei
        61
    chloerei  
       2023-10-16 13:41:02 +08:00
    Turbo 标语

    > The speed of a single-page web application without having to write any JavaScript.

    https://turbo.hotwired.dev/

    使用 Turbo 的功能几乎不用写 JS ,Turbo 也不会阻止你的代码用不用 TS ,不知道激动啥……
    est
        62
    est  
       2023-10-16 14:55:35 +08:00   ❤️ 2
    我倡议 IDE 引入富文本编辑技术,喜欢折腾类型的去变量的上标、下标、角标 去整天鼓捣类型,不喜欢类型的隐藏起来当无类型的继续撸。这样大家相安无事

    至于我?别人的库不提供类型,IDE 里没发 . 出来智能提示,我要骂娘;

    我自己的写的代码肯定是动态类型的。接口是什么类型调用者去猜就行了。
    YuJianrong
        63
    YuJianrong  
       2023-10-17 01:17:07 +08:00
    @Mark24
    赞成。不过有一点不同意,何止 type 不重要,type 不过是冰山一角。
    计算机应该为人类服务,而不是人类为了计算机(和硬件细节)去定类型、算法、类等等一系列非人类的东西。
    以后写程序就应该是对着计算机口述要求,计算机就自动 0 bug 运行起来。

    这样可能会有 bug ?嘿,没 bug 本来就是应该打破的幻想。
    cailinunix
        64
    cailinunix  
       2023-10-18 01:13:22 +08:00
    @Mark24
    描述底层的类型系统也有其存在的价值,rust 需要用它的类型系统去做 borrow check ,去推断变量的生命周期,这些都有价值。
    类型注解其实和嵌入语言的类型系统没有多大区别,typescript 的诞生就是为了兼容 js ,它甚至因此做出了很大让步( anyscript ), 谈不上分裂生态,不然 turbo 也没那么容易移除所有 ts
    当然不指望类型系统能消除所有 bug ,但是使用 typescript 的确比 js 能少很多低级错误,同时也是一个非常好的文档
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1613 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:54 · PVG 00:54 · LAX 08:54 · JFK 11:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.