javascript - TypeScript 产生无法访问的代码

标签 javascript typescript transpiler

我用 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;
}

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

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

最佳答案

这不是错误,这只是 variable hoisting 。每个 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;

}

您还可以看到this .

关于javascript - TypeScript 产生无法访问的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39017932/

相关文章:

javascript - 动态加载 Javascript 文件和加载完成事件

javascript - Typescript - 函数应该返回一个字符串而不是 () -> 字符串

c++ - 如何调试并进入编译为C++的自定义语言源?

JavaScript 按钮停止页面上的所有音频

javascript - 在javascript中计算时差

typescript - 如何在 typescript 中获得严格的值类型?

javascript - 在 Node.js 中使用 TypeScript 异步等待

javascript - ES6 转译器中的导入/导出

javascript - 如何让 setInterval 倒计时工作?

typescript - 如何使用环境枚举类型执行详尽的 switch 语句