如何在TypeScript类之间维护Promise上下文?

时间:2018-02-05 03:21:04

标签: typescript es6-promise

我有一个TypeScript类,其类方法返回一个promise:

GetSampleTrackingData() {
    return new Promise<TrackingData>((resolve) => {
        fs.readFile(path.resolve(__dirname, 'sim1.txt'), (err, data) => {
            //Irrelevant code removed
            resolve(foo);
        });
    });
}

当它被调用时,它会抛出错误ReferenceError: fs is not defined。如果没有包含在诺言中,代码就可以正常运行。

本质上,调用promise时不会保持上下文。 (它是从Express.js调用的)

如果相关,我尝试了几种不同的方法来导入'fs'。

如何让承诺保持上下文?

Link to the class in GitHub

1 个答案:

答案 0 :(得分:1)

我联系了TypeScript团队,结果发现这是在2.7.1中发生的TypeScript错误。修复应该在2.7.2。

使用tsc -w选项时,如果在promise中使用代码,则会错误地删除某些引用。修复方法是降级到2.6,或使用tsc而不使用-w选项。

Here is the bug they pointed me to.