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

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

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

    刚才看到 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 呢?

    一切到此结束!
    37 条回复    2023-05-04 08:45:59 +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 没有什么不好的地方。类型体操是库作者应该纠结的事。
    tulongtou
        4
    tulongtou  
       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 (狗头)
    bojackhorseman
        10
    bojackhorseman  
       2023-05-01 22:56:31 +08:00 via iPhone
    i love ts.再小的项目我也要上 ts ,为的就是让它给我自动提示🤣
    janus77
        11
    janus77  
       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:40 +08:00 via Android
    如你所说,因为你一个人写外包。你要是包工头,可能就想着 ts 了
    Imindzzz
        14
    Imindzzz  
       2023-05-02 00:02:28 +08:00
    https://www.v2ex.com/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 日
    enchilada2020
        19
    enchilada2020  
       2023-05-02 00:59:42 +08:00 via Android
    @cosmain 有没有一种可能 Mar 是三月的缩写😅
    enchilada2020
        20
    enchilada2020  
       2023-05-02 01:00:11 +08:00 via Android
    @cosmain 我错了 回复时没刷新内容(
    enchilada2020
        21
    enchilada2020  
       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 。别为难自己就好
    DOLLOR
        33
    DOLLOR  
       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  
       364 天前
    @flyqie 你要说十几年前 js 是座屎山我同意,现在嘛。。 就感觉前端这个圈子没事干挺奇怪的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2371 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:58 · PVG 20:58 · LAX 05:58 · JFK 08:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.