什么是打字稿变换

feo*_*f84 7 typescript angular

我刚读了一篇关于官方博客angular 5的文章(https://blog.angular.io/version-5-0-0-of-angular-now-available-37e414935ced).有关于打字稿变换的讨论.详细地:

"TypeScript转换在幕后,Angular编译器现在作为TypeScript转换运行,使得增量重建速度大大加快.TypeScript转换是作为TypeScript 2.3的一部分引入的新功能,它允许我们挂钩到标准的TypeScript编译管道."

我想更好地理解它.转换或编译管道,是什么?TNX!

Tit*_*mir 4

这是指 typescript 编译器如何生成 Javascript 代码的内部原理。从 2.3 开始,编译器采用 Typescript AST(抽象语法树)并应用一系列转换(转换管道)。在管道的末尾,您会得到一个新的 AST,它是 Javascript AST。

从源代码来看,这些是电流互感器:

打字稿变压器

因此,例如,当编译启用和模块的es5目标时,将包括以下转换:jsxsystem

  • TransformTypeScript - 将删除打字稿特定注释

  • transformJsx - 将删除jsx语法并将其转换为 Javascript

  • transformESNext - 将转换esnextes2017

  • TransformES2017 - 将转变es2017es2016

  • transformES2016 - 将转变es2016es2015

  • TransformES2015 - 将转换es2015es5(减去生成器)

  • TransformGenerators - 将es2015生成器转换为es5

  • TransformSystemModule - 将添加模块特定的 js 代码。

应用所有转换后,将 AST 写入文件是一个简单的操作。