首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >TypeScript类,它是泛型混凝土的泛型

TypeScript类,它是泛型混凝土的泛型
EN

Stack Overflow用户
提问于 2019-06-10 00:46:47
回答 1查看 16关注 0票数 0

登录操作的http响应:

代码语言:javascript
复制
interface ILoginResponse {   // ok
  message: string
  token: string;
}

它插入到一个通用响应中,我想用它来处理所有类型的http响应:

代码语言:javascript
复制
interface IResponse<TResponseData> {    // ok
  Data: TResponseData;
  Errors: string[];
  Status: number;
}

我想在通用抽象服务中使用它,如下所示:

代码语言:javascript
复制
abstract class HttpService<TRequest, IResponse<TResponseData>> {   // ERROR
  protected onSuccess(responseData: TResponseData);  // I want to do this (hide the wrapper from the subclass)
}

我想为各种http操作进行扩展,比如:

代码语言:javascript
复制
class LoginService extends HttpService<ILoginRequest, ILoginResponse> { }  // ok

问题出在HttpService类:"Cannot find name 'TResponseData'"中。

我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-10 00:48:52

您可以将第二个参数约束为扩展IResponse

代码语言:javascript
复制
abstract class HttpService<TRequest, TResponse extends IResponse<any>> { }

或者,您可以在需要响应的任何地方使用TResponseDataIResponse<TResponseData>

代码语言:javascript
复制
abstract class HttpService<TRequest, TResponseData> { 
    doRequest(request: TRequest) : IResponse<TResponseData>
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56516513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档