diff --git a/index.d.cts b/index.d.cts index 787f7384..31267037 100644 --- a/index.d.cts +++ b/index.d.cts @@ -461,11 +461,11 @@ declare namespace axios { headers?: RawAxiosRequestHeaders | AxiosHeaders | Partial; } - interface AxiosResponse { + interface AxiosResponse { data: T; status: number; statusText: string; - headers: RawAxiosResponseHeaders | AxiosResponseHeaders; + headers: H & RawAxiosResponseHeaders | AxiosResponseHeaders; config: InternalAxiosRequestConfig; request?: any; } diff --git a/index.d.ts b/index.d.ts index aa27f335..a0796c46 100644 --- a/index.d.ts +++ b/index.d.ts @@ -393,11 +393,11 @@ export interface CreateAxiosDefaults extends Omit headers?: RawAxiosRequestHeaders | AxiosHeaders | Partial; } -export interface AxiosResponse { +export interface AxiosResponse { data: T; status: number; statusText: string; - headers: RawAxiosResponseHeaders | AxiosResponseHeaders; + headers: H & RawAxiosResponseHeaders | AxiosResponseHeaders; config: InternalAxiosRequestConfig; request?: any; } diff --git a/test/module/typings/cjs/index.ts b/test/module/typings/cjs/index.ts index 0a5fdd16..0304f054 100644 --- a/test/module/typings/cjs/index.ts +++ b/test/module/typings/cjs/index.ts @@ -115,6 +115,10 @@ interface User { name: string; } +interface ResponseHeaders { + 'x-header': string; +} + // with default axios.AxiosResponse result const handleUserResponse = (response: axios.AxiosResponse) => { @@ -162,6 +166,54 @@ axios.patch('/user', { name: 'foo', id: 1 }) .then(handleUserResponse) .catch(handleError); + +// with custom response headers axios.AxiosResponse result + +const handleUserResponseWithCustomHeaders = (response: axios.AxiosResponse) => { + console.log(response.data.id); + console.log(response.data.name); + console.log(response.status); + console.log(response.statusText); + console.log(response.headers); + console.log(response.config); +}; + +axios.get>('/user?id=12345') +.then(handleUserResponseWithCustomHeaders) +.catch(handleError); + +axios.get>('/user', { params: { id: 12345 } }) +.then(handleUserResponseWithCustomHeaders) +.catch(handleError); + +axios.head>('/user') +.then(handleUserResponseWithCustomHeaders) +.catch(handleError); + +axios.options>('/user') +.then(handleUserResponseWithCustomHeaders) +.catch(handleError); + +axios.delete>('/user') +.then(handleUserResponseWithCustomHeaders) +.catch(handleError); + +axios.post>('/user', { name: 'foo', id: 1 }) +.then(handleUserResponseWithCustomHeaders) +.catch(handleError); + +axios.post>('/user', { name: 'foo', id: 1 }, { headers: { 'X-FOO': 'bar' } }) +.then(handleUserResponseWithCustomHeaders) +.catch(handleError); + +axios.put>('/user', { name: 'foo', id: 1 }) +.then(handleUserResponseWithCustomHeaders) +.catch(handleError); + +axios.patch>('/user', { name: 'foo', id: 1 }) +.then(handleUserResponseWithCustomHeaders) +.catch(handleError); + // (Typed methods) with custom response type const handleStringResponse = (response: string) => { diff --git a/test/module/typings/esm/index.ts b/test/module/typings/esm/index.ts index 4d424740..d0c83645 100644 --- a/test/module/typings/esm/index.ts +++ b/test/module/typings/esm/index.ts @@ -137,6 +137,10 @@ interface User { name: string; } +interface ResponseHeaders { + 'x-header': string; +} + // with default AxiosResponse result const handleUserResponse = (response: AxiosResponse) => { @@ -184,6 +188,53 @@ axios.patch('/user', { name: 'foo', id: 1 }) .then(handleUserResponse) .catch(handleError); +// with custom response headers AxiosResponse result + +const handleUserResponseWithCustomHeaders = (response: AxiosResponse) => { + console.log(response.data.id); + console.log(response.data.name); + console.log(response.status); + console.log(response.statusText); + console.log(response.headers); + console.log(response.config); + }; + +axios.get>('/user?id=12345') + .then(handleUserResponseWithCustomHeaders) + .catch(handleError); + +axios.get>('/user', { params: { id: 12345 } }) + .then(handleUserResponseWithCustomHeaders) + .catch(handleError); + +axios.head>('/user') + .then(handleUserResponseWithCustomHeaders) + .catch(handleError); + +axios.options>('/user') + .then(handleUserResponseWithCustomHeaders) + .catch(handleError); + +axios.delete>('/user') + .then(handleUserResponseWithCustomHeaders) + .catch(handleError); + +axios.post>('/user', { name: 'foo', id: 1 }) + .then(handleUserResponseWithCustomHeaders) + .catch(handleError); + +axios.post>('/user', { name: 'foo', id: 1 }, { headers: { 'X-FOO': 'bar' } }) + .then(handleUserResponseWithCustomHeaders) + .catch(handleError); + +axios.put>('/user', { name: 'foo', id: 1 }) + .then(handleUserResponseWithCustomHeaders) + .catch(handleError); + +axios.patch>('/user', { name: 'foo', id: 1 }) + .then(handleUserResponseWithCustomHeaders) + .catch(handleError); + // (Typed methods) with custom response type const handleStringResponse = (response: string) => {