【问题标题】:Relationship between TypeScript and ES6TypeScript 与 ES6 的关系
【发布时间】:2016-05-10 08:23:36
【问题描述】:

全部:

我对 Typescript 和 ES6 还很陌生,首先让我感到困惑的是它们的关系,来自 MSDN:

TypeScript 1.5 添加了许多新的 ES6 功能,包括模块, 解构,传播,for..of,符号,计算属性, let/const 和标记的字符串模板。

我的困惑是(我知道有很多帖子说 Typescript 是 JS 的超集):

这意味着 TypeScript 只是使用自己的方式(一些稍微不同的语法和转译)再次重做 ES6 中已经存在的内容(仅用于类型目的),

这是否意味着 ES6 基本上可以做 TypeScript 中的所有事情?反之亦然

【问题讨论】:

    标签: typescript ecmascript-6


    【解决方案1】:

    TypeScript 是一种脚本代码,它被转译为 JavaScript - ES5 或 ES6(以及 ES3)。

    TypeScript 1.5 添加了许多新的 ES6 功能,包括模块, 解构,展开,for..of,符号,计算属性, let/const 和标记的字符串模板。

    这意味着您可以在 TypeScript 代码中使用模块、for..of 和其他功能,TypeScript 编译器会将您的代码转换为执行相同操作的 ESx 兼容代码。我们以for..of 为例:

    TypeScript 代码:

    for (let t of [1,2,3]) {
        console.log(t)
    } 
    

    像这样被转译成 ES5:

    for (var _i = 0, _a = [1, 2, 3]; _i < _a.length; _i++) {
        var t = _a[_i];
        console.log(t);
    }
    

    但是,如果你以 ES6 为目标,那么转译很简单:

    for (let t of [1,2,3]) {
        console.log(t);
    }
    

    同样适用于模块、spread 等。在每种情况下,TypeScript 生成的代码在 ES5、ES6 和 ES6 中行为相同(它被简化了,因为它并不总是可能的)。

    TypeScript 和 ES6 的表现力没有区别。不同之处在于 TypeScript 编译器可以帮助您对代码进行静态分析。否则,无论你可以在 ES6 中编程,你都可以在 TypeScript 中编程,反之亦然。

    【讨论】:

    • 我问这个的原因是当我第一次学习Angular2时,在快速入门部分,即使它说“Angular2 for typescript”,代码仍然包含像import from这样的ES6代码,所以我想知道是否typescript 可以在 ES6 中完成所有操作,或者我仍然需要了解 ES6 才能使用 angular 2
    • 嗯,我认为答案是“视情况而定”。像 Object.assign 这样的 ES6 函数在两种语言中都是相同的。 TypeScript 中的模块应该与 ES6 中的模块行为非常相似,并且 TypeScript 会尽力与 ES6 特性保持一致。因此,您不必学习两种完全不同的语言。
    • 谢谢,我猜是相似性给我带来了困惑。
    • TypeScript 具有 EcmaScript 不具备的附加功能(至少)
    • @vkurchatkin 是的。我只是试图让我的答案简短。有无数的细节,但它可能会吓到人们。 :-)
    【解决方案2】:

    ecmascript 是 Javascript 遵循的标准规范。 ES5、ES6、ES7 是这个标准规范的版本。 Typescript 被编译成 Javascript。根据您拥有的节点编译器版本,您将确定您的 Typescript 将被编译为哪个 Javascript 标准版本。

    【讨论】:

      【解决方案3】:

      Typescript 是一个创建 ecmascript 的编译器。 Typescript 源代码支持类型、接口、超类/子类以及您从其他编程语言中知道的任何内容。如前所述,结果是 ecmascript,可在任何浏览器中运行。

      【讨论】:

      • 谢谢,这是否意味着我不需要了解任何 ES6,只要我会使用 typescript?我问这个的原因是当我第一次学习Angular2时,在快速入门部分,即使它说“Angular2 for typescript”,代码仍然包含像import from这样的ES6代码,所以我只是想知道typescript是否可以在ES6中做所有事情或者我仍然需要了解 ES6 才能使用 Angular 2
      猜你喜欢
      • 2016-02-14
      • 1970-01-01
      • 2020-06-13
      • 2017-08-22
      • 2018-04-20
      • 2016-09-08
      • 2018-08-03
      • 1970-01-01
      • 2017-08-20
      相关资源
      最近更新 更多