V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
black11black
V2EX  ›  问与答

有大佬能介绍一下什么是 TypeScript 吗,相比 Javasript 优势在哪里?

  •  
  •   black11black · 2020-08-27 02:58:01 +08:00 · 618 次点击
    这是一个创建于 1310 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,寻 js 大佬理性讨论。

    我原本是对 js 的语言设计有成见的,但是最近越发有从后端走向全干的发展,慢慢学起来感觉写的也顺手了

    前几天看到有人讨论 typescript,好像 ts 很高端,js 以后要被时代淘汰一样。我很好奇就想问问,虽然听说过很多次了,但是这东西到底是干嘛的?

    百度一搜全是类似 ts 是 js 的超集这种没营养的话,我想知道既然已经有 js 了,为什么还要设计 ts 这个东西呢,它的应用场景是什么? js 升级到 es6 以后老实说原本语言设计上一些比较蛋疼菊紧的地方已经消除掉了,起码我个人写起来直观感受基本上没有什么阻滞感,很丝滑,循环也不用加闭包搞定了,面向对象的部分也堪用,

    根据我的理解,ts 在 js 的基础上加上了固定类型约束,单纯这点上可以看出很难说上是语法抽象性的升级,并不是说我用 ts 以后语言的抽象描述能力更强了。另一方面 ts 似乎最终还是搞到 js 解释器里执行的,也并非用魔法变成了二进制,所以加固定类型约束的目的似乎也不是为了提高执行效率。

    所以总的来说问题还是,ts 这个东西到底是设计来干嘛的,相比传统有什么优势,现在它有什么应用场景? js 本身是一门非常轻的语言,很短的时间就能掌握,(我本人没用 js 做过后端项目,我觉得 js 的模组化设计的就是一场灾难,所谓短时间掌握只是在基础应用范围内),对于我这种没写过一句 ts 的外行人,ts 是否也值得花时间掌握呢?

    GeruzoniAnsasu
        1
    GeruzoniAnsasu  
       2020-08-27 03:10:56 +08:00
    难到你从来没体会到过静态类型语言的好处?
    fuermosi777
        2
    fuermosi777  
       2020-08-27 03:16:49 +08:00
    ts 这个东西到底是设计来干嘛的?
    在 js 基础上加上类型限制。你提到的 js 升级到 es6 之后的好处只是在语言层面上的。ts 所能提供的好处则是在开发层面上的。你能想象你加入一个开发团队,准备在一个有几百个模块的大型 web 应用上添加一个新的 feature,然后拿到一个巨大的 model object 却对它是什么、长什么样子全然不知时所面临的窘境吗?

    相比传统( js )有什么优势?
    有类型限制

    有什么应用场景?
    适用于任何 js 使用场景,但对于团队和大型 web 应用效果拔群

    对于我这种没写过一句 ts 的外行人,ts 是否也值得花时间掌握呢?
    值得
    black11black
        3
    black11black  
    OP
       2020-08-27 03:18:46 +08:00
    @GeruzoniAnsasu 工程化好处当然重要,但像上面说的仅做提示就非常不可理解。像 java 的类型是出名的 unsound 引发了各种问题,但结合解释器需要就让人没觉得有什么奇怪。如果单纯是一个 js 版的 type hint,不觉得很鸡肋吗?
    black11black
        4
    black11black  
    OP
       2020-08-27 03:20:18 +08:00
    @fuermosi777 查了查,似乎要接入前端框架需要踩坑,并不能无痛。感觉上是单纯依团队需求更改的选项。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2656 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:18 · PVG 23:18 · LAX 08:18 · JFK 11:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.