mirror of
https://github.com/tenrok/axios.git
synced 2026-06-20 20:00:40 +03:00
Make the default type of response data never (#3002)
This requires TypeScript users to explicitly define the type of the data they are consuming. Before this, data was `any` by default. This means TypeScript consumers didn’t get type safety if they forgot to specify the type. Technically this is a breaking change for TypeScript users, as this will report errors if they forgot to specifiy the response type. The simplest workaround would be to explicitly set the response type to `any`, so it’s not breaking much. The `unknown` type is probably a slightly better fit, but this requires TypeScript ^3. `data` is still `any` in the very specific use case mentioned in https://github.com/microsoft/TypeScript/issues/38969 Co-authored-by: Jay <jasonsaayman@gmail.com>
This commit is contained in:
Vendored
+11
-11
@@ -80,7 +80,7 @@ export interface AxiosRequestConfig<T = any> {
|
|||||||
transitional?: TransitionalOptions
|
transitional?: TransitionalOptions
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface AxiosResponse<T = any> {
|
export interface AxiosResponse<T = never> {
|
||||||
data: T;
|
data: T;
|
||||||
status: number;
|
status: number;
|
||||||
statusText: string;
|
statusText: string;
|
||||||
@@ -89,7 +89,7 @@ export interface AxiosResponse<T = any> {
|
|||||||
request?: any;
|
request?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface AxiosError<T = any> extends Error {
|
export interface AxiosError<T = never> extends Error {
|
||||||
config: AxiosRequestConfig;
|
config: AxiosRequestConfig;
|
||||||
code?: string;
|
code?: string;
|
||||||
request?: any;
|
request?: any;
|
||||||
@@ -98,7 +98,7 @@ export interface AxiosError<T = any> extends Error {
|
|||||||
toJSON: () => object;
|
toJSON: () => object;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface AxiosPromise<T = any> extends Promise<AxiosResponse<T>> {
|
export interface AxiosPromise<T = never> extends Promise<AxiosResponse<T>> {
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CancelStatic {
|
export interface CancelStatic {
|
||||||
@@ -142,14 +142,14 @@ export class Axios {
|
|||||||
response: AxiosInterceptorManager<AxiosResponse>;
|
response: AxiosInterceptorManager<AxiosResponse>;
|
||||||
};
|
};
|
||||||
getUri(config?: AxiosRequestConfig): string;
|
getUri(config?: AxiosRequestConfig): string;
|
||||||
request<T = any, R = AxiosResponse<T>> (config: AxiosRequestConfig<T>): Promise<R>;
|
request<T = never, R = AxiosResponse<T>> (config: AxiosRequestConfig<T>): Promise<R>;
|
||||||
get<T = any, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig<T>): Promise<R>;
|
get<T = never, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig<T>): Promise<R>;
|
||||||
delete<T = any, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig<T>): Promise<R>;
|
delete<T = never, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig<T>): Promise<R>;
|
||||||
head<T = any, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig<T>): Promise<R>;
|
head<T = never, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig<T>): Promise<R>;
|
||||||
options<T = any, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig<T>): Promise<R>;
|
options<T = never, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig<T>): Promise<R>;
|
||||||
post<T = any, R = AxiosResponse<T>>(url: string, data?: T, config?: AxiosRequestConfig<T>): Promise<R>;
|
post<T = never, R = AxiosResponse<T>>(url: string, data?: T, config?: AxiosRequestConfig<T>): Promise<R>;
|
||||||
put<T = any, R = AxiosResponse<T>>(url: string, data?: T, config?: AxiosRequestConfig<T>): Promise<R>;
|
put<T = never, R = AxiosResponse<T>>(url: string, data?: T, config?: AxiosRequestConfig<T>): Promise<R>;
|
||||||
patch<T = any, R = AxiosResponse<T>>(url: string, data?: T, config?: AxiosRequestConfig<T>): Promise<R>;
|
patch<T = never, R = AxiosResponse<T>>(url: string, data?: T, config?: AxiosRequestConfig<T>): Promise<R>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface AxiosInstance extends Axios {
|
export interface AxiosInstance extends Axios {
|
||||||
|
|||||||
@@ -296,7 +296,7 @@ axios.interceptors.response.use((response: AxiosResponse) => Promise.resolve(res
|
|||||||
// Adapters
|
// Adapters
|
||||||
|
|
||||||
const adapter: AxiosAdapter = (config: AxiosRequestConfig) => {
|
const adapter: AxiosAdapter = (config: AxiosRequestConfig) => {
|
||||||
const response: AxiosResponse = {
|
const response: AxiosResponse<any> = {
|
||||||
data: { foo: 'bar' },
|
data: { foo: 'bar' },
|
||||||
status: 200,
|
status: 200,
|
||||||
statusText: 'OK',
|
statusText: 'OK',
|
||||||
|
|||||||
Reference in New Issue
Block a user