如何解决编译错误
How to resolve compile error
将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 的一部分。
代码有效。如果我将其注释掉,它会破坏应用程序。我不确定它要做什么。
根据您从 DurandalJS
链接到的页面,它需要 jQuery
承诺,如果您真的愿意,可以用 Q 交换。
jQuery deferred
需要一个函数 promise
(参见 doc),而 Q
有一个 属性 调用 promise
所以为了让 DurandalJS 正常工作,它需要它是一个函数,这正是它所期望的。
您可以通过如下所示的转换修复您遇到的错误
deferred.promise = <any>function() { return promise; };
将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 的一部分。
代码有效。如果我将其注释掉,它会破坏应用程序。我不确定它要做什么。
根据您从 DurandalJS
链接到的页面,它需要 jQuery
承诺,如果您真的愿意,可以用 Q 交换。
jQuery deferred
需要一个函数 promise
(参见 doc),而 Q
有一个 属性 调用 promise
所以为了让 DurandalJS 正常工作,它需要它是一个函数,这正是它所期望的。
您可以通过如下所示的转换修复您遇到的错误
deferred.promise = <any>function() { return promise; };