我对登录操作的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'"
中。
我该怎么做?
答案 0 :(得分:1)
您可以限制第二个参数扩展IResponse
:
abstract class HttpService<TRequest, TResponse extends IResponse<any>> { }
或者您可以使用TResponseData
并在需要响应的任何地方使用IResponse<TResponseData>
:
abstract class HttpService<TRequest, TResponseData> {
doRequest(request: TRequest) : IResponse<TResponseData>
}