在Typescript中有不一致的返回点是什么意思

时间:2013-12-12 07:11:48

标签: 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 () {});
        });
    }

1 个答案:

答案 0 :(得分:1)

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

如果你的函数失败了,它将从return语句中选择类型,所以如果你在一个条件中返回一个字符串,然后再过去,那么TypeScript编译器会将返回类型推断为{{1} }。

我在TypeScript Playground中对此进行了测试,但有很多变化 - 所以这意味着Visual Studio中的警告来自另一个扩展 - 在我的设置中查看可能的候选人让我觉得你有ReSharper在运行(或者你正在使用一个不同的IDE,也检查这个。)

ReSharper自6.1版开始检查string,他们确实在版本8.1中引入了一般的TypeScript支持。

修复是从所有return语句返回一个公共类型,如果您的调用代码不依赖于该调用的结果,则在您的情况下将完全删除inconsistent return points关键字。