登录操作的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'"
中。
我该怎么做呢?
发布于 2019-06-10 00:48:52
您可以将第二个参数约束为扩展IResponse
abstract class HttpService<TRequest, TResponse extends IResponse<any>> { }
或者,您可以在需要响应的任何地方使用TResponseData
和IResponse<TResponseData>
:
abstract class HttpService<TRequest, TResponseData> {
doRequest(request: TRequest) : IResponse<TResponseData>
}
https://stackoverflow.com/questions/56516513
复制相似问题