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

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

  •  
  •   humbass · 332 天前 · 3628 次点击
    这是一个创建于 332 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    一切到此结束!
    37 条回复    2023-05-04 08:45:59 +08:00
    hsfzxjy
        1
    hsfzxjy  
       332 天前 via Android
    但是 ts 的代码提示真的很爽
    codehz
        2
    codehz  
       332 天前 via iPhone
    这篇钓鱼文还真有人翻译也是笑死(
    看看原文发布时间
    kkocdko
        3
    kkocdko  
       332 天前   ❤️ 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  
       332 天前
    预计楼下开始打嘴仗
    crysislinux
        5
    crysislinux  
       332 天前 via Android
    外包你不好写的时候就写 any script 好了。现在的 jsdoc 实际上大部分时候已经是靠 typescript 工作了。原本的 jsdoc 语法有很大的局限性。
    lisongeee
        6
    lisongeee  
       332 天前   ❤️ 1
    如果这个提案 <https://github.com/tc39/proposal-type-annotations> 进入 stage 4 ,你又准备写哪个版本的 js 呢?
    pursuer
        7
    pursuer  
       332 天前
    我更习惯写 typescript ,找库的话也是 typescript 优先,不然看代码有点痛苦
    lujiaosama
        8
    lujiaosama  
       332 天前
    ts 写熟练了根本没啥心智负担, 就当成简单的类型提示来用, 又不是成天搞类型体操. 视 ts 如洪水猛兽的真的难以理解, ts 带来的健壮性给人一种安全感, 我相信也没多少人写原生 JS 会加上 use strict. ts 带来的好处小项目是体现不出来的, 在上了规模项目, 多人协作时就非常关键了,需求频繁变动,破坏性改动时 ts 带来的好处不言而喻.
    要吐槽的是 ts 的类型收窄, 还是不够智能时常得断言. 以前合法的现在不合法了, 打开项目一片红. 如果是第三方库的报错就更头疼了.
    renmu
        9
    renmu  
       332 天前 via Android
    我喜欢别人项目是 ts 写的,而我用 js (狗头)
    bojackhorseman
        10
    bojackhorseman  
       332 天前 via iPhone
    i love ts.再小的项目我也要上 ts ,为的就是让它给我自动提示🤣
    janus77
        11
    janus77  
       332 天前
    ts 那些丰富的特性本来就是因为大型和超大型项目的复杂度才诞生的,你写个 demo 纠结什么啊,拿自己长处抨击别人短处是不是有点离谱了
    huijiewei
        12
    huijiewei  
       332 天前
    我写 hello world 也用 js

    一切抽象在 hello world 面前都是 x
    dayeye2006199
        13
    dayeye2006199  
       332 天前 via Android
    如你所说,因为你一个人写外包。你要是包工头,可能就想着 ts 了
    Imindzzz
        14
    Imindzzz  
       332 天前
    https://www.v2ex.com/t/792205

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

    这个英文原文的时间是 2023 年 5 月 20 日?
    cosmain
        18
    cosmain  
       332 天前
    我错了,是 3 月 20 日
    enchilada2020
        19
    enchilada2020  
       332 天前 via Android
    @cosmain 有没有一种可能 Mar 是三月的缩写😅
    enchilada2020
        20
    enchilada2020  
       332 天前 via Android
    @cosmain 我错了 回复时没刷新内容(
    enchilada2020
        21
    enchilada2020  
       332 天前 via Android
    就正题来说 本来就是一个东西 为啥要分开 各有优势和使用场景 哪个合适用哪个就好了嘛

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

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

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

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

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

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

    《我们》难绷,怎么,TS 要运行不转义 JS ?搁这用 Bun.sh
    a379395979
        37
    a379395979  
       330 天前
    @flyqie 你要说十几年前 js 是座屎山我同意,现在嘛。。 就感觉前端这个圈子没事干挺奇怪的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3593 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 10:29 · PVG 18:29 · LAX 03:29 · JFK 06:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.