TypeScript生成无法访问的代码

Bil*_*Tom 2 javascript transpiler typescript

我在TypeScript中编写了以下函数

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

    return tasksPerUser;
}
Run Code Online (Sandbox Code Playgroud)

这转化为以下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;
}
Run Code Online (Sandbox Code Playgroud)

我不明白var _a;返回语句应该完成什么.这对我来说似乎没有意义,因为该行永远不会被执行.这是TypeScript中的错误,还是有更深层的含义?

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

Sur*_*yan 7

它不是一个bug,这只是变量提升.每个var声明都会转到函数的顶部.你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;

}
Run Code Online (Sandbox Code Playgroud)

你也可以看到这个.

  • 看到?我设法在发布前2秒预测这个问题:) (2认同)