我在尝试使用.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定义文件是否有错误?
由于
答案 0 :(得分:1)
JQuery promises在DefinitelyTyped定义文件中有一个复杂的结构,因为JQuery承诺自己有一个复杂的结构/历史。您应该能够通过提供泛型参数来帮助编译器选择正确的重载,而不是依赖于推理:
.then<string>(() =>
{
return first();
})
另外,如果你需要做很多工作,我就谦虚地建议使用像Q.js这样的库。 Q更接近作为ES6承诺基础的Promises / A +规范,它是一个更简单的定义库,因此类型推理往往在TypeScript中更好地工作,并且它提供了许多有用的辅助工具,如Q.all