如何解决编译错误

时间:2015-05-31 02:55:29

标签: typescript q

将js文件转换为ts文件后,我收到此编译错误:

Type '() => Promise<{}>' is not assignable to type 'Promise<{}>'.
Property 'fin' is missing in type '() => Promise<{}>'.  

这是代码:

system.defer = function(action) {
    var deferred = Q.defer();
    action.call(deferred, deferred);
    var promise = deferred.promise;
    deferred.promise = function() { return promise; }; //Error here
    return deferred;
};

这条错误信息是什么?我该怎么做才能解决?

此代码来自此page,它是DurandalJS的一部分。

代码有效。如果我发表评论,它会破坏应用程序。我不确定它的目的是什么。

1 个答案:

答案 0 :(得分:2)

根据您从DurandalJS链接到的页面,如果您真的想要,可以使用jQuery承诺与Q交换。

jQuery deferred需要一个函数promise(请参阅doc),而Q有一个名为promise的属性,以便DurandalJS正常工作要求它是一个功能,因为它是它所期望的。

你可以使用下面的演员来修复你所犯的错误

deferred.promise = <any>function() { return promise; };