当前位置:  开发笔记 > 编程语言 > 正文

TypeScript类型推断问题

如何解决《TypeScript类型推断问题》经验,为你挑选了0个好方法。

我在MongoDB node.js驱动程序中使用TypeScript。请注意,这不是一个Mongo问题,它只是我遇到的这个问题的特殊用例。

几乎每个Mongo调用都使用一个(arg1, arg2, ..., argn, callback)其中callback接受函数的模式(err, res)。但是,我想使用承诺。我试图通过编写一个辅助包装函数来简化用法,如下所示:

function mongoWrap(action: (callback: (err: Error, res: T) => void) => void) : q.IPromise
{
    var promise = q.Promise((resolve, reject) => {
       action((err, res) => {
           if (err) reject(err);
           else resolve(res);
       });
    });

    return promise;
}

这很好用,除了出于某种原因编译器无法推断的类型T。我必须打如下电话:

var dbPromise = mongoWrap(cb => mongoClient.connect("mongodb://localhost:27017/database", cb));

如果我省略该零件,结果将是Promise<{}>并且我失去类型安全性。但是,编译器显然知道callbackMongo调用的参数是(err: Error, db: Db) => void

我该怎么做才能使编译器正确推断出类型T

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有