最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

变量在分配之前使用

运维笔记admin13浏览0评论

变量在分配之前使用

变量在分配之前使用

我正在尝试通过JSON对象值分配对象并返回它

interface Input {
    vehicles: Vehicle[];
    costs: Cost;
}

function readInput(fileName: string): Input{
    let input: Input;

    readFile(fileName, function (err, data) {
        if (err) {
            throw err;
        }
        input = JSON.parse(data.toString("utf8"));
    });

    return input;
}

输入变量已经“使用”为let input: Input似乎是一个错误。这是来自终端与tsc -w命令

src/input.ts(43,12): error TS2454: Variable 'input' is used before being assigned.
19:22:01 - Compilation complete. Watching for file changes.
回答如下:

input变量进行的唯一赋值是传递给readFile的回调函数。

Typescript无法仅从静态类型分析中确定将确实进行赋值(例如if (err)可能就是这种情况),或甚至决定是否将调用回调函数(即,可以以这样的方式实现readFile)绝不会打电话给你的功能。

此外,通过函数readFile的名称判断似乎是异步的,这意味着在readInput()已经完成执行后,很可能会调用您的回调。

考虑到所有这些因素,Typescript无法保证在return input;点上会对该变量进行赋值(而且我相信它实际上不会这样)。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论