将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的一部分。
代码有效。如果我发表评论,它会破坏应用程序。我不确定它的目的是什么。
答案 0 :(得分:2)
根据您从DurandalJS
链接到的页面,如果您真的想要,可以使用jQuery
承诺与Q交换。
jQuery deferred
需要一个函数promise
(请参阅doc),而Q
有一个名为promise
的属性,以便DurandalJS正常工作要求它是一个功能,因为它是它所期望的。
你可以使用下面的演员来修复你所犯的错误
deferred.promise = <any>function() { return promise; };