繁体   English   中英

TypeScript:替换现有类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM