2

我在 TypeScript 中编写了以下函数

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

    return tasksPerUser;
}

转译为以下 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;
}

我不明白var _a;return 语句之后应该完成什么。这对我来说似乎很荒谬,因为这条线从未被执行过。这是 TypeScript 中的错误,还是有更深层次的含义?

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

4

1 回答 1

7

这不是一个错误,这只是变量提升。每个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;

}

你也可以看到这个

于 2016-08-18T12:14:22.203 回答