node.js - Typescript 中返回点不一致是什么意思

标签 node.js typescript

这是 NodeJs 中的一些 JavaScript 代码,我用它来保存上传的文件。我正在尝试将其转换为 Typescript。它会在单词 save 上引发错误 - “函数保存具有不一致的返回点”。

public save(req, res, next) {
        // validate if upload was successful
        if (!req.files || !req.files.userfile) return next(new Error('Upload data not received, can\'t proceed.'));
        var userfile = req.files.userfile;
        // examine this object for available attributes
        console.log(userfile);
        // ensure public/data dir exists
        var dataDir = 'public/data';

        //Add temporarily unique name here
        var filenum = 0;
        while(fs.existsSync(dataDir + "/" + tempFile(filenum))){
            filenum++;
        }
        var target = path.join(dataDir, tempFile(filenum));
        fs.rename(userfile.path, target, function (err) {
            req.uploadLink = target.replace(/public/gi, '');
            next(err);
            // cleanup
            fs.unlink(userfile.path, function () {});
        });
    }

最佳答案

Ryan 是对的 - TypeScript 将检查不兼容的返回类型,并在您的函数返回(例如,在一个地方返回一个字符串)时向您发出 Could not find the best common type... 错误警告和一个不同地方的数字。

如果你的函数失败,它会从 return 语句中选择类型,因此,如果你在条件中返回一个字符串,然后稍后失败,TypeScript 编译器将推断返回类型为 string .

我在 TypeScript Playground 中用许多变体测试了这一点 - 所以这意味着 Visual Studio 中的警告来自另一个扩展 - 查看我的设置中可能的候选者让我认为您正在运行 ReSharper(或者您可能正在使用另一个 IDE 也会检查这一点)。

自版本 6.1 以来,ReSharper 已检查不一致的返回点,并且他们确实在版本 8.1 中引入了通用 TypeScript 支持。

解决方法是从所有 return 语句返回一个通用类型,在您的情况下,如果您的调用代码不依赖于该调用的结果,则完全删除 return 关键字。

关于node.js - Typescript 中返回点不一致是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20537175/

相关文章:

node.js - 在 nginx 中为 Ghost 博客创建 uri

javascript - Commander JS - 验证参数

javascript - 如何使用 Blockchain 的 API 跟踪比特币交易

javascript - Typescript 如何声明一个返回其调用对象的方法(this)

javascript - 如何创建一个包含元组的集合,其中每个元组必须是唯一的?

javascript - 从一个巨大的 (>200MB) 数组文件中加载随机对象而不加载整个数组

node.js - 使顺序 HTTP 请求成为 Node 中的阻塞操作吗?

node.js - 如何清除指数项目中未满足的对等依赖错误

reactjs - ReactJS 组件类是否需要构造函数

javascript - 将外部 javascript 库导入 Typescript 以与 Node 一起使用