2016-08-18 37 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沒有翻譯,但相當。由發動機 –