【问题标题】:TypeScript produces unreachable codeTypeScript 生成无法访问的代码
【发布时间】:2016-08-18 12:13:02
【问题描述】:

我在 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,没有任何编译器标志。

【问题讨论】:

    标签: javascript typescript transpiler


    【解决方案1】:

    这不是错误,这只是 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

    【讨论】:

    • 我不认为“翻译”是一个好词。更像是“相当于”。人们可能最终会认为还有另一个转译器
    • 如何翻译,由谁翻译?
    • @BillyTom 未翻译但等效。按引擎
    • 看到了吗?我设法在发布前 2 秒预测了这个问题 :)
    • @Stilgar 同意你的看法。已更改
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-31
    • 2011-11-18
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    相关资源
    最近更新 更多