2016-08-18 60 views
2

我写了下面的功能打字稿打字稿生产可达代码

function initializeTasksPerUserJSON(task) 
{ 
    const tasksPerUser = { 
     'username': task.mantisUsername, 
     'duration_minutes': task.mantisBugNoteDurationSum, 
     'categories': { 
      [task.mantisBugCategoryName]: initializeTaskCategoriesJSON(task) 
     } 
    }; 

    return tasksPerUser; 
} 

这transpiles以下的JavaScript

function initializeTasksPerUserJSON(task) { 
    var tasksPerUser = { 
     'username': task.mantisUsername, 
     'duration_minutes': task.mantisBugNoteDurationSum, 
     'categories': (_a = {}, 
      _a[task.mantisBugCategoryName] = initializeTaskCategoriesJSON(task), 
      _a 
     ) 
    }; 
    return tasksPerUser; 
    var _a; 
} 

我不明白return语句后var _a;应该完成。这对我来说似乎是无稽之谈,因为这条线从未被执行过。这是TypeScript中的一个错误,还是对它有更深的含义?

我正在使用没有任何编译器标志的tsc版本1.8.10。

回答

7

这是不是一个错误,这只是variable hoisting。每var声明会到function.You Javascript顶部将相当于此。

function initializeTasksPerUserJSON(task) { 
    var _a; // See here 
    var tasksPerUser; 
    tasksPerUser = { 
     'username': task.mantisUsername, 
     'duration_minutes': task.mantisBugNoteDurationSum, 
     'categories': (_a = {}, 
      _a[task.mantisBugCategoryName] = initializeTaskCategoriesJSON(task), 
      _a 
     ) 
    }; 
    return tasksPerUser; 

} 

您还可以看到this

+0

我不认为“翻译”是一个很好的术语。更像是“相当于”。人们可能最终会想,沿途还有另一个翻译记者 – Stilgar

+0

翻译过,怎么翻译? – BillyTom

+0

@BillyTom没有翻译,但相当。由发动机 –