diff --git a/packages/axios/src/index.ts b/packages/axios/src/index.ts index 847856dd..e835d373 100644 --- a/packages/axios/src/index.ts +++ b/packages/axios/src/index.ts @@ -145,9 +145,10 @@ export function createFlatRequest(axiosConfig, options); - const flatRequest: FlatRequestInstance = async function flatRequest( - config: CustomAxiosRequestConfig - ) { + const flatRequest: FlatRequestInstance = async function flatRequest< + T = any, + R extends ResponseType = 'json' + >(config: CustomAxiosRequestConfig) { try { const response: AxiosResponse = await instance(config); @@ -163,7 +164,7 @@ export function createFlatRequest; + } as FlatRequestInstance; flatRequest.cancelRequest = cancelRequest; flatRequest.cancelAllRequest = cancelAllRequest; diff --git a/packages/axios/src/type.ts b/packages/axios/src/type.ts index 8a4461c2..0ecbacbb 100644 --- a/packages/axios/src/type.ts +++ b/packages/axios/src/type.ts @@ -85,15 +85,17 @@ export type FlatResponseSuccessData = { error: null; }; -export type FlatResponseFailData = { +export type FlatResponseFailData = { data: null; - error: AxiosError; + error: AxiosError; }; -export type FlatResponseData = FlatResponseSuccessData | FlatResponseFailData; +export type FlatResponseData = + | FlatResponseSuccessData + | FlatResponseFailData; -export interface FlatRequestInstance> extends RequestInstanceCommon { +export interface FlatRequestInstance, ResponseData = any> extends RequestInstanceCommon { ( config: CustomAxiosRequestConfig - ): Promise>>; + ): Promise, ResponseData>>; } diff --git a/packages/hooks/src/use-request.ts b/packages/hooks/src/use-request.ts index e44e6dd7..a0a40e63 100644 --- a/packages/hooks/src/use-request.ts +++ b/packages/hooks/src/use-request.ts @@ -16,19 +16,19 @@ export type HookRequestInstanceResponseSuccessData = { error: Ref; }; -export type HookRequestInstanceResponseFailData = { +export type HookRequestInstanceResponseFailData = { data: Ref; - error: Ref>; + error: Ref>; }; -export type HookRequestInstanceResponseData = { +export type HookRequestInstanceResponseData = { loading: Ref; -} & (HookRequestInstanceResponseSuccessData | HookRequestInstanceResponseFailData); +} & (HookRequestInstanceResponseSuccessData | HookRequestInstanceResponseFailData); -export interface HookRequestInstance { +export interface HookRequestInstance { ( config: CustomAxiosRequestConfig - ): HookRequestInstanceResponseData>; + ): HookRequestInstanceResponseData, ResponseData>; cancelRequest: (requestId: string) => void; cancelAllRequest: () => void; } @@ -45,13 +45,13 @@ export default function createHookRequest( ) { const request = createFlatRequest(axiosConfig, options); - const hookRequest: HookRequestInstance = function hookRequest( + const hookRequest: HookRequestInstance = function hookRequest( config: CustomAxiosRequestConfig ) { const { loading, startLoading, endLoading } = useLoading(); - const data = ref | null>(null); - const error = ref> | null>(null); + const data = ref | null>(null) as Ref>; + const error = ref | null>(null) as Ref | null>; startLoading(); @@ -70,7 +70,7 @@ export default function createHookRequest( data, error }; - } as HookRequestInstance; + } as HookRequestInstance; hookRequest.cancelRequest = request.cancelRequest; hookRequest.cancelAllRequest = request.cancelAllRequest;