Jquery承诺链接+ Typescript =类型不匹配

时间:2014-08-25 18:55:01

标签: jquery typescript promise

我在尝试使用.then

链接jQuery Promise时遇到了一些问题

请参阅下面的代码:

function first(): JQueryPromise<string>
{
    return $.when('1');
}

function test()
{
    $.when()
        .then(() =>
        {
            return first();
        })
        .then((value) =>
        {
            var str: string = value; //<--- type mismatch here.
        });
}

Typescript期望该值的类型为JQueryPromise而不是“string”。

如果我向任何人施展价值,我能够使其发挥作用。

是否有不同的方法来实现它,或者JQuery定义文件是否有错误?

由于

1 个答案:

答案 0 :(得分:1)

JQuery promises在DefinitelyTyped定义文件中有一个复杂的结构,因为JQuery承诺自己有一个复杂的结构/历史。您应该能够通过提供泛型参数来帮助编译器选择正确的重载,而不是依赖于推理:

.then<string>(() =>
{
    return first();
})

另外,如果你需要做很多工作,我就谦虚地建议使用像Q.js这样的库。 Q更接近作为ES6承诺基础的Promises / A +规范,它是一个更简单的定义库,因此类型推理往往在TypeScript中更好地工作,并且它提供了许多有用的辅助工具,如Q.all