Typescript 编译器或 ES2015 - 是否优化代码?

jQw*_*rdy 4 optimization typescript ecmascript-6

在其他语言的编译器领域,当它被编译为从循环中被拉出时,这样的东西会被优化,所以每次都不会创建一个新对象:

const arr = [1, 2, 3, 4, 5]

arr.map(num => {

    const one_time = 5; // this never changes, can be lifted out of the loop.

    return num * one_time;
 })
Run Code Online (Sandbox Code Playgroud)

我试图查看打字稿编译器是否更改了上面的代码,但似乎没有 - 也许其他东西可以解决它?或者,对象创建可能会分配该变量并且永远不会更改它。

我不指望 ES2015 这样做,因为它被解释了,但我很高兴错了。

如果有人能告诉我将来如何最好地为自己解决这个问题,那就加分。

谢谢你们!

Dav*_*ret 5

不,TypeScript 编译器不做任何优化。这是它的非目标之一:

非目标

  • 积极优化程序的运行时性能。相反,发出符合运行时平台性能特征的惯用 JavaScript 代码。

来源:https : //github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals

至于 ES2015,那是一种语言规范。JS 引擎会编译和优化。