TypeScript与ES6的关系

TypeScript与ES6的关系,typescript,ecmascript-6,Typescript,Ecmascript 6,全部: 我对Typescript和ES6还很陌生,首先让我困惑的是他们之间的关系,来自MSDN: TypeScript 1.5添加了许多新的ES6功能,包括模块, 分解、排列、符号、计算属性、, let/const和标记的字符串模板 我的困惑是(我知道有很多帖子说Typescript是JS的超集): 这意味着TypeScript是否只是使用它自己的方式(一些稍微不同的语法和transfile)再次重做ES6中已经存在的内容(仅用于键入目的), 及 这是否意味着ES6基本上可以在TypeScrip

全部:

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

TypeScript 1.5添加了许多新的ES6功能,包括模块, 分解、排列、符号、计算属性、, let/const和标记的字符串模板

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

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


这是否意味着ES6基本上可以在TypeScript中完成所有这项工作?反之亦然,Typescript是一个创建ecmascript的编译器。Typescript源代码支持类型、接口、超级/子类以及您从其他编程语言了解的任何内容。如前所述,结果是ecmascript,它可以在任何浏览器中运行。

TypeScript是一种脚本代码,可以传输到JavaScript,也可以传输到ES5或ES6(以及ES3)

TypeScript 1.5添加了许多新的ES6功能,包括模块, 分解、排列、符号、计算属性、, let/const和标记的字符串模板

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

打字脚本代码:

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);
}
模块、排列等也是如此。在每种情况下,TypeScript生成的代码在ES5、ES6和ES6中的行为都是相同的(它被简化了,因为它并不总是可能的)


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

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

谢谢,这是否意味着只要我能使用typescript,我就不需要知道任何ES6?我问这个问题的原因是当我第一次学习Angular2时,在快速入门部分,即使它说“Angular2 for typescript”,代码仍然包括ES6代码,比如import from,所以我只是想知道typescript是否可以在ES6中做所有事情,或者我仍然需要知道ES6以便使用Angular2。我问这个问题的原因是当我第一次学习Angular2时,在快速入门部分,即使它说“Angular2 for typescript”,代码仍然包括ES6代码,比如import from,所以我只是想知道typescript是否可以在ES6中完成所有工作,或者我仍然需要了解ES6才能使用Angular2。我想答案是“这取决于”。类似Object.assign的ES6函数在两种语言中是相同的。TypeScript中的模块的行为应该与ES6中的模块非常相似,TypeScript会尽最大努力与ES6功能保持一致。所以你不必学习两种完全不同的语言。谢谢,我想是相似性让我感到困惑。TypeScript有EcmaScript所没有的额外功能(至少现在还没有)@vkurchatkin是的。我只是尽量简短地回答。有无数的细节,但它可能会吓唬人。:-)
for (let t of [1,2,3]) {
    console.log(t);
}