TypeScript类是泛型的具体泛型

时间:2019-06-09 16:46:47

标签: typescript

我对登录操作的http响应:

interface ILoginResponse {   // ok
  message: string
  token: string;
}

这插入了通用响应,我想将其用于各种http响应:

interface IResponse<TResponseData> {    // ok
  Data: TResponseData;
  Errors: string[];
  Status: number;
}

我想在这样的通用抽象服务中使用:

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

我想扩展用于以下各种http操作:

class LoginService extends HttpService<ILoginRequest, ILoginResponse> { }  // ok

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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以限制第二个参数扩展IResponse

abstract class HttpService<TRequest, TResponse extends IResponse<any>> { }

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

abstract class HttpService<TRequest, TResponseData> { 
    doRequest(request: TRequest) : IResponse<TResponseData>
}