[英]TypeScript: substitute existing type
我有一个使用AngularJS的项目,并希望在$http
服务上方进行包装。 我希望我的请求承诺有abort()
方法。
如果我写
function request(params:ng.IRequestConfig):my.IRequestPromise {
var promise = $http(params).then(onSuccess, onError);
promise.abort = function () { // => here it fails with error "Property 'abort' does not exist on type 'IPromise<{}>'"
...
}
return promise;
}
它在具有abort
定义的行上失败。
我编写了一个接口IRequestPromise
,它通过添加abort()
方法扩展了ng.IPromise
。 如何让TypeScript将promise
视为my.IRequestPromise
而不是ng.IPromise
?
你可以投的类型( ng.IPromise
承诺返还到您的类型)( my.IRequestPromise
从扩展ng.IPromise
):
即
var promise = <my.IRequestPromise<yourreturntype>>$http(params).then(onSuccess, onError);
假设您的扩展名是这样的:
export interface IRequestPromise<T> extends ng.IPromise<T> {
...
}
还要确保您的函数返回类型也是属性类型,即
function request(params:ng.IRequestConfig):my.IRequestPromise<anyOrSpecificTypeResolvedByPromise> {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.