有没有人跟我一样偏好原生 JS 写项目,而不是 TS - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
humbass
V2EX    程序员

有没有人跟我一样偏好原生 JS 写项目,而不是 TS

  •  
  •   humbass 2023-05-01 21:55:43 +08:00 4840 次点击
    这是一个创建于 897 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚才看到 https://juejin.cn/post/7218117377052377143 , 深有同感。

    本人做项目外包,给客户的代码常规都使用js实现,极少需要给客户直接使用的类库才使用 ts(也因为万恶的 vscode 给自家的语言做了代码提示优化)。在我看来ES 5/6/7才是原滋原味的 js ,而不是披着 js 外衣的 C#。

    • 吐槽下 nuxt 完全放弃原生 js
    • 祝福 tser 在搬砖的工厂卷起来
    第 1 条附言    2023-05-02 02:26:09 +08:00
    这个帖子就不讨论了,我本人也会写 ts ,只是基于工作特点,尽量写 js ,个人感觉效率高。v2 什么时候变成 ts 政治正确了。另外我们的 js 还可以跑在单片机上,哪来的 ts 呢?

    一切到此结束!
    39 条回复    2025-03-23 17:55:09 +08:00
    hsfzxjy
        1
    hsfzxjy  
       2023-05-01 22:04:54 +08:00 via Android
    但是 ts 的代码提示真的很爽
    codehz
        2
    codehz  
       2023-05-01 22:18:57 +08:00 via iPhone
    这篇钓鱼文还真有人翻译也是笑死(
    看看原文发布时间
    kkocdko
        3
    kkocdko  
       2023-05-01 22:19:42 +08:00   1
    0. 由于“TypeScript 是 Javascript 的超集”,所以不存在“完全放弃原生 JS”的说法。没有人会阻止你写 AnyScript 。我平时写的时候,就只会在发现类型提示不见了之后才主动补充一下定义。
    1. TypeScript 不太可能消亡,因为现有的针对 Javascript 的智能提示大多是基于 tsserver ,这是强大的 TypeScript 给我们的恩赐。
    2. 针对编译速度问题,可以使用 ESBuild ,SWC 等方案,由于它们只做类型擦除等原因,速度很快。我这里有一个中小规模的前端项目,编译时间几乎可以忽略( esbuild 0.3s )。
    3. 使用 JSDoc 替代 TypeScript 在大多数时候可行,但是你想想,是写 `/** @param Type name */ function foo(name)` 方便,还是写 `function foo(name: Type)` 方便呢?我觉得只要你不写出类型体操,TypeScript 没有什么不好的地方。类型体操是库作者应该纠结的事。
    DonaidTrump
        4
    DonaidTrump  
       2023-05-01 22:21:37 +08:00
    预计楼下开始打嘴仗
    crysislinux
        5
    crysislinux  
       2023-05-01 22:28:04 +08:00 via Android
    外包你不好写的时候就写 any script 好了。现在的 jsdoc 实际上大部分时候已经是靠 typescript 工作了。原本的 jsdoc 语法有很大的局限性。
    lisongeee
        6
    lisongeee  
       2023-05-01 22:39:38 +08:00   1
    如果这个提案 <https://github.com/tc39/proposal-type-annotations> 进入 stage 4 ,你又准备写哪个版本的 js 呢?
    pursuer
        7
    pursuer  
       2023-05-01 22:41:44 +08:00
    我更习惯写 typescript ,找库的话也是 typescript 优先,不然看代码有点痛苦
    lujiaosama
        8
    lujiaosama  
       2023-05-01 22:54:33 +08:00
    ts 写熟练了根本没啥心智负担, 就当成简单的类型提示来用, 又不是成天搞类型体操. 视 ts 如洪水猛兽的真的难以理解, ts 带来的健壮性给人一种安全感, 我相信也没多少人写原生 JS 会加上 use strict. ts 带来的好处小项目是体现不出来的, 在上了规模项目, 多人协作时就非常关键了,需求频繁变动,破坏性改动时 ts 带来的好处不言而喻.
    要吐槽的是 ts 的类型收窄, 还是不够智能时常得断言. 以前合法的现在不合法了, 打开项目一片红. 如果是第三方库的报错就更头疼了.
    renmu
        9
    renmu  
       2023-05-01 22:56:01 +08:00 via Android
    我喜欢别人项目是 ts 写的,而我用 js (狗头)
    dumbass
        10
    dumbass  
       2023-05-01 22:56:31 +08:00 via iPhone
    i love ts.再小的项目我也要上 ts ,为的就是让它给我自动提示
    rb6221
        11
    rb6221  
       2023-05-01 22:58:55 +08:00
    ts 那些丰富的特性本来就是因为大型和超大型项目的复杂度才诞生的,你写个 demo 纠结什么啊,拿自己长处抨击别人短处是不是有点离谱了
    huijiewei
        12
    huijiewei  
       2023-05-01 23:02:33 +08:00
    我写 hello world 也用 js

    一切抽象在 hello world 面前都是 x
    dayeye2006199
        13
    dayeye2006199  
       2023-05-01 23:11:4 +08:00 via Android
    如你所说,因为你一个人写外包。你要是包工头,可能就想着 ts 了
    Imindzzz
        14
    Imindzzz  
       2023-05-02 00:02:28 +08:00
    t/792205

    看看我这个帖子?大家都挺认真讨论的,没有阴阳怪气。欢迎你补充讨论
    opentrade
        15
    opentrade  
       2023-05-02 00:03:44 +08:00
    自己一个人写着写着就到处是 any
    humbass
        16
    humbass  
    OP
       2023-05-02 00:15:37 +08:00
    @dayeye2006199 我刚好就是包工头,多的时候有招了 12 个同事,目前经济不好只有 3 个同事。顺便说一句,隔壁写 ts 的和写 java 的外包都倒闭了,原来我们这个孵化器有 9 个外包公司。
    cosmain
        17
    cosmain  
       2023-05-02 00:57:39 +08:00

    这个英文原文的时间是 2023 年 5 月 20 日?
    cosmain
        18
    cosmain  
       2023-05-02 00:58:03 +08:00
    我错了,是 3 月 20 日
    KMpAn8Obw1QhPoEP
        19
    KMpAn8Obw1QhPoEP  
       2023-05-02 00:59:42 +08:00 via Android
    @cosmain 有没有一种可能 Mar 是三月的缩写
    KMpAn8Obw1QhPoEP
        20
    KMpAn8Obw1QhPoEP  
       2023-05-02 01:00:11 +08:00 via Android
    @cosmain 我错了 回复时没刷新内容(
    KMpAn8Obw1QhPoEP
        21
    KMpAn8Obw1QhPoEP  
       2023-05-02 01:03:22 +08:00 via Android
    就正题来说 本来就是一个东西 为啥要分开 各有优势和使用场景 哪个合适用哪个就好了嘛

    想短平快的 可以预见不会大规模重构也不会扩展维护 那肯定是 JS 撸完拉倒

    想写着更踏实 更易于阅读 需要不定期重构 且长期维护 那从最开始就用 TS 好好规划一下 收益多多
    Aloento
        22
    Aloento  
       2023-05-02 01:03:53 +08:00   1
    笑死了,为什么 V2 上还会有这样的问题
    ochatokori
        23
    ochatokori  
       2023-05-02 01:33:37 +08:00 via Android
    前端喜欢用 js 写,nodejs 后端喜欢用 ts 写
    TWorldIsNButThis
        24
    TWorldIsNButThis  
       2023-05-02 01:39:50 +08:00
    我用 react 没这个问题
    BeautifulSoap
        25
    BeautifulSoap  
       2023-05-02 01:54:00 +08:00 via Android
    ts 有各种问题,比如编译后失去变量类型导致无法简单做 validation ,无法 di 注入,json 解析都没法确保和定义的 class 结构一致等,所以导致 ts 项目里装饰器满天飞。但那都是别的问题,和去用 jsdoc 来做类型注释写个 hello world 等级的代码就发文章是另一回事。
    Leviathann
        26
    Leviathann  
       2023-05-02 02:01:49 +08:00
    @BeautifulSoap 很多 validation 库提供的 codec 功能保证了运行时结构和定义一致,只需要在输入输出的地方调用即可
    asuraa
        27
    asuraa  
       2023-05-02 08:23:25 +08:00
    大部分人写 ts 最后全是 any
    那你还不如写 js 呢
    justin2018
        28
    justin2018  
       2023-05-02 09:12:20 +08:00
    除了类型体操 和 AnyScript , 其他的还好~~

    主要是为了编译器补全~
    learningman
        29
    learningman  
       2023-05-02 10:15:17 +08:00
    在我看来汇编才是原滋原味的编程语言 ,而不是运行时解释的 js 。
    FreshOldMan
        30
    FreshOldMan  
       2023-05-02 10:42:41 +08:00
    js 这种没类型的,效率高在哪里,你呆的都是创业小公司吧,协一坨类型不明的 data ,class ,这个后面谁来维护
    xiangyuecn
        31
    xiangyuecn  
       2023-05-02 11:31:50 +08:00
    写 c++ ,编译成 js
    ruoxie
        32
    ruoxie  
       2023-05-02 15:15:19 +08:00
    TS 给我更好的的开发体验,所以我用 TS 。你觉得原生 JS 给你更好的开发体验,那你就用原生 JS 。别为难自己就好
    AV1
        33
    AV1  
       2023-05-02 18:02:02 +08:00
    写 TS 的人按下.就知道 object 里的字段了,
    写 JS 的人还在翻过期的文档,然后一边单步调试一边 console.log ,摸索这 object 到底塞了啥。
    a379395979
        34
    a379395979  
       2023-05-02 22:06:42 +08:00
    感觉也就前端圈疯狂内卷的结果吧,就连 npm 都有 pnpm 、yarn 。 弱类型语言也很多,也没见哪个用别的语言来转成自己的。。
    flyqie
        35
    flyqie  
       2023-05-03 01:44:44 +08:00 via Android
    @a379395979 #34

    其他不评论,主要最后一段。

    归根到底还是设计 js 的时候大家都没想到浏览器会发展到今天这样。。

    结果搞得现在只能修修补补,各种转回到 js 的语言也是因为没办法直接改掉 js 这座屎山所做的妥协(后端相对来说干净很多,因为没那么重的包袱)。
    Aloento
        36
    Aloento  
       2023-05-03 01:54:05 +08:00
    > 另外我们的 js 还可以跑在单片机上,哪来的 ts 呢?

    《我们》难绷,怎么,TS 要运行不转义 JS ?搁这用 Bun.sh
    a379395979
        37
    a379395979  
       2023-05-04 08:45:59 +08:00
    @flyqie 你要说十几年前 js 是座屎山我同意,现在嘛。。 就感觉前端这个圈子没事干挺奇怪的
    ko1haha
        38
    ko1haha  
       2024-07-21 13:55:47 +08:00
    我喜欢 js ,因为我的代码风格和混淆后的代码高度一致,参数名首选 e ,次选 a,b,c,d

    ,这让我觉得那些闭源的浏览器扩展也是开源项目。(狗头)
    roundgis
        39
    roundgis  
       206 天前 via Android
    @crysislinux 和 gcc 是用 cpp 的 但是上用 c 的人更多是一道理
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3167 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 10:56 PVG 18:56 LAX 03:56 JFK 06:56
    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