TypeScript和ES6之间的关系

时间:2016-02-01 18:52:43

标签: typescript ecmascript-6

所有

我对Typescript和ES6很新,首先让我困惑的是他们的关系,来自MSDN:

  

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

我的困惑是(我知道很多帖子都说打字稿是JS的超集):

这意味着TypeScript只是使用自己的方式(一些稍微差异的语法和变换)来重做已经存在于ES6中的内容(仅用于类型目的),

这是否意味着ES6基本上可以完成TypeScript中的所有操作?反之亦然

3 个答案:

答案 0 :(得分:6)

TypeScript是一个转换为JavaScript的脚本代码 - 可以是ES5或ES6(也是ES3)。

  

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

这意味着您可以使用模块,for..of和TypeScript代码中的其他功能,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);
}

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

相关问题