2
0
mirror of https://github.com/tenrok/axios.git synced 2026-06-23 20:40:40 +03:00

Fix TypeScript exports (#4884)

TypeScript 4.7 introduced the `node16` module option. This requires
CommonJS libraries like axios to be properly typed as CommonJS.

The proper type for `module.export =` in JavaScript, is to use
`exports =` in TypeScript. In order to export additional types, a
namespace can be used. However, no values can be exported like this.
Values are exported using the `AxiosStatic` interface.

This change should be non-breaking. If TypeScript users previously
relied on the faux default export, they now need to enable
`esModuleInterop`, as they should have been doing in the first place.

Co-authored-by: Jay <jasonsaayman@gmail.com>
This commit is contained in:
Remco Haszing
2022-09-28 20:30:21 +02:00
committed by GitHub
parent 65977f995c
commit 9588fcdec8
3 changed files with 321 additions and 324 deletions
Vendored
+134 -127
View File
@@ -2,37 +2,93 @@
type AxiosHeaders = Record<string, string | string[] | number | boolean>; type AxiosHeaders = Record<string, string | string[] | number | boolean>;
type MethodsHeaders = { type MethodsHeaders = {
[Key in Method as Lowercase<Key>]: AxiosHeaders; [Key in axios.Method as Lowercase<Key>]: AxiosHeaders;
}; };
interface CommonHeaders { interface CommonHeaders {
common: AxiosHeaders; common: AxiosHeaders;
} }
export type AxiosRequestHeaders = Partial<AxiosHeaders & MethodsHeaders & CommonHeaders>; declare class AxiosError_<T = unknown, D = any> extends Error {
constructor(
message?: string,
code?: string,
config?: axios.AxiosRequestConfig<D>,
request?: any,
response?: axios.AxiosResponse<T, D>
);
export type AxiosResponseHeaders = Record<string, string> & { config?: axios.AxiosRequestConfig<D>;
code?: string;
request?: any;
response?: axios.AxiosResponse<T, D>;
isAxiosError: boolean;
status?: number;
toJSON: () => object;
cause?: Error;
static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS";
static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE";
static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION";
static readonly ERR_NETWORK = "ERR_NETWORK";
static readonly ERR_DEPRECATED = "ERR_DEPRECATED";
static readonly ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE";
static readonly ERR_BAD_REQUEST = "ERR_BAD_REQUEST";
static readonly ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT";
static readonly ERR_INVALID_URL = "ERR_INVALID_URL";
static readonly ERR_CANCELED = "ERR_CANCELED";
static readonly ECONNABORTED = "ECONNABORTED";
static readonly ETIMEDOUT = "ETIMEDOUT";
}
declare class CanceledError_<T> extends AxiosError_<T> {
}
declare class Axios_ {
constructor(config?: axios.AxiosRequestConfig);
defaults: axios.AxiosDefaults;
interceptors: {
request: axios.AxiosInterceptorManager<axios.AxiosRequestConfig>;
response: axios.AxiosInterceptorManager<axios.AxiosResponse>;
};
getUri(config?: axios.AxiosRequestConfig): string;
request<T = any, R = axios.AxiosResponse<T>, D = any>(config: axios.AxiosRequestConfig<D>): Promise<R>;
get<T = any, R = axios.AxiosResponse<T>, D = any>(url: string, config?: axios.AxiosRequestConfig<D>): Promise<R>;
delete<T = any, R = axios.AxiosResponse<T>, D = any>(url: string, config?: axios.AxiosRequestConfig<D>): Promise<R>;
head<T = any, R = axios.AxiosResponse<T>, D = any>(url: string, config?: axios.AxiosRequestConfig<D>): Promise<R>;
options<T = any, R = axios.AxiosResponse<T>, D = any>(url: string, config?: axios.AxiosRequestConfig<D>): Promise<R>;
post<T = any, R = axios.AxiosResponse<T>, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig<D>): Promise<R>;
put<T = any, R = axios.AxiosResponse<T>, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig<D>): Promise<R>;
patch<T = any, R = axios.AxiosResponse<T>, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig<D>): Promise<R>;
postForm<T = any, R = axios.AxiosResponse<T>, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig<D>): Promise<R>;
putForm<T = any, R = axios.AxiosResponse<T>, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig<D>): Promise<R>;
patchForm<T = any, R = axios.AxiosResponse<T>, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig<D>): Promise<R>;
}
declare namespace axios {
type AxiosRequestHeaders = Partial<AxiosHeaders & MethodsHeaders & CommonHeaders>;
type AxiosResponseHeaders = Record<string, string> & {
"set-cookie"?: string[] "set-cookie"?: string[]
}; };
export interface AxiosRequestTransformer { interface AxiosRequestTransformer {
(data: any, headers: AxiosRequestHeaders): any; (data: any, headers: AxiosRequestHeaders): any;
} }
export interface AxiosResponseTransformer { interface AxiosResponseTransformer {
(data: any, headers?: AxiosResponseHeaders, status?: number): any; (data: any, headers?: AxiosResponseHeaders, status?: number): any;
} }
export interface AxiosAdapter { interface AxiosAdapter {
(config: AxiosRequestConfig): AxiosPromise; (config: AxiosRequestConfig): AxiosPromise;
} }
export interface AxiosBasicCredentials { interface AxiosBasicCredentials {
username: string; username: string;
password: string; password: string;
} }
export interface AxiosProxyConfig { interface AxiosProxyConfig {
host: string; host: string;
port: number; port: number;
auth?: { auth?: {
@@ -40,9 +96,9 @@ export interface AxiosProxyConfig {
password: string; password: string;
}; };
protocol?: string; protocol?: string;
} }
export type Method = type Method =
| 'get' | 'GET' | 'get' | 'GET'
| 'delete' | 'DELETE' | 'delete' | 'DELETE'
| 'head' | 'HEAD' | 'head' | 'HEAD'
@@ -54,7 +110,7 @@ export type Method =
| 'link' | 'LINK' | 'link' | 'LINK'
| 'unlink' | 'UNLINK'; | 'unlink' | 'UNLINK';
export type ResponseType = type ResponseType =
| 'arraybuffer' | 'arraybuffer'
| 'blob' | 'blob'
| 'document' | 'document'
@@ -62,7 +118,7 @@ export type ResponseType =
| 'text' | 'text'
| 'stream'; | 'stream';
export type responseEncoding = type responseEncoding =
| 'ascii' | 'ASCII' | 'ascii' | 'ASCII'
| 'ansi' | 'ANSI' | 'ansi' | 'ANSI'
| 'binary' | 'BINARY' | 'binary' | 'BINARY'
@@ -76,26 +132,26 @@ export type ResponseType =
| 'utf8' | 'UTF8' | 'utf8' | 'UTF8'
| 'utf16le' | 'UTF16LE'; | 'utf16le' | 'UTF16LE';
export interface TransitionalOptions { interface TransitionalOptions {
silentJSONParsing?: boolean; silentJSONParsing?: boolean;
forcedJSONParsing?: boolean; forcedJSONParsing?: boolean;
clarifyTimeoutError?: boolean; clarifyTimeoutError?: boolean;
} }
export interface GenericAbortSignal { interface GenericAbortSignal {
aborted: boolean; aborted: boolean;
onabort: ((...args: any) => any) | null; onabort: ((...args: any) => any) | null;
addEventListener: (...args: any) => any; addEventListener: (...args: any) => any;
removeEventListener: (...args: any) => any; removeEventListener: (...args: any) => any;
} }
export interface FormDataVisitorHelpers { interface FormDataVisitorHelpers {
defaultVisitor: SerializerVisitor; defaultVisitor: SerializerVisitor;
convertValue: (value: any) => any; convertValue: (value: any) => any;
isVisitable: (value: any) => boolean; isVisitable: (value: any) => boolean;
} }
export interface SerializerVisitor { interface SerializerVisitor {
( (
this: GenericFormData, this: GenericFormData,
value: any, value: any,
@@ -103,28 +159,28 @@ export interface SerializerVisitor {
path: null | Array<string | number>, path: null | Array<string | number>,
helpers: FormDataVisitorHelpers helpers: FormDataVisitorHelpers
): boolean; ): boolean;
} }
export interface SerializerOptions { interface SerializerOptions {
visitor?: SerializerVisitor; visitor?: SerializerVisitor;
dots?: boolean; dots?: boolean;
metaTokens?: boolean; metaTokens?: boolean;
indexes?: boolean; indexes?: boolean;
} }
// tslint:disable-next-line // tslint:disable-next-line
export interface FormSerializerOptions extends SerializerOptions { interface FormSerializerOptions extends SerializerOptions {
} }
export interface ParamEncoder { interface ParamEncoder {
(value: any, defaultEncoder: (value: any) => any): any; (value: any, defaultEncoder: (value: any) => any): any;
} }
export interface ParamsSerializerOptions extends SerializerOptions { interface ParamsSerializerOptions extends SerializerOptions {
encode?: ParamEncoder; encode?: ParamEncoder;
} }
export interface AxiosRequestConfig<D = any> { interface AxiosRequestConfig<D = any> {
url?: string; url?: string;
method?: Method | string; method?: Method | string;
baseURL?: string; baseURL?: string;
@@ -163,9 +219,9 @@ export interface AxiosRequestConfig<D = any> {
FormData?: new (...args: any[]) => object; FormData?: new (...args: any[]) => object;
}; };
formSerializer?: FormSerializerOptions; formSerializer?: FormSerializerOptions;
} }
export interface HeadersDefaults { interface HeadersDefaults {
common: AxiosRequestHeaders; common: AxiosRequestHeaders;
delete: AxiosRequestHeaders; delete: AxiosRequestHeaders;
get: AxiosRequestHeaders; get: AxiosRequestHeaders;
@@ -177,121 +233,66 @@ export interface HeadersDefaults {
purge?: AxiosRequestHeaders; purge?: AxiosRequestHeaders;
link?: AxiosRequestHeaders; link?: AxiosRequestHeaders;
unlink?: AxiosRequestHeaders; unlink?: AxiosRequestHeaders;
} }
export interface AxiosDefaults<D = any> extends Omit<AxiosRequestConfig<D>, 'headers'> { interface AxiosDefaults<D = any> extends Omit<AxiosRequestConfig<D>, 'headers'> {
headers: HeadersDefaults; headers: HeadersDefaults;
} }
export interface CreateAxiosDefaults<D = any> extends Omit<AxiosRequestConfig<D>, 'headers'> { interface CreateAxiosDefaults<D = any> extends Omit<AxiosRequestConfig<D>, 'headers'> {
headers?: AxiosRequestHeaders | Partial<HeadersDefaults>; headers?: AxiosRequestHeaders | Partial<HeadersDefaults>;
} }
export interface AxiosResponse<T = any, D = any> { interface AxiosResponse<T = any, D = any> {
data: T; data: T;
status: number; status: number;
statusText: string; statusText: string;
headers: AxiosResponseHeaders; headers: AxiosResponseHeaders;
config: AxiosRequestConfig<D>; config: AxiosRequestConfig<D>;
request?: any; request?: any;
} }
export class AxiosError<T = unknown, D = any> extends Error { type AxiosPromise<T = any> = Promise<AxiosResponse<T>>;
constructor(
message?: string,
code?: string,
config?: AxiosRequestConfig<D>,
request?: any,
response?: AxiosResponse<T, D>
);
config?: AxiosRequestConfig<D>; interface CancelStatic {
code?: string;
request?: any;
response?: AxiosResponse<T, D>;
isAxiosError: boolean;
status?: number;
toJSON: () => object;
cause?: Error;
static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS";
static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE";
static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION";
static readonly ERR_NETWORK = "ERR_NETWORK";
static readonly ERR_DEPRECATED = "ERR_DEPRECATED";
static readonly ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE";
static readonly ERR_BAD_REQUEST = "ERR_BAD_REQUEST";
static readonly ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT";
static readonly ERR_INVALID_URL = "ERR_INVALID_URL";
static readonly ERR_CANCELED = "ERR_CANCELED";
static readonly ECONNABORTED = "ECONNABORTED";
static readonly ETIMEDOUT = "ETIMEDOUT";
}
export class CanceledError<T> extends AxiosError<T> {
}
export type AxiosPromise<T = any> = Promise<AxiosResponse<T>>;
export interface CancelStatic {
new (message?: string): Cancel; new (message?: string): Cancel;
} }
export interface Cancel { interface Cancel {
message: string | undefined; message: string | undefined;
} }
export interface Canceler { interface Canceler {
(message?: string, config?: AxiosRequestConfig, request?: any): void; (message?: string, config?: AxiosRequestConfig, request?: any): void;
} }
export interface CancelTokenStatic { interface CancelTokenStatic {
new (executor: (cancel: Canceler) => void): CancelToken; new (executor: (cancel: Canceler) => void): CancelToken;
source(): CancelTokenSource; source(): CancelTokenSource;
} }
export interface CancelToken { interface CancelToken {
promise: Promise<Cancel>; promise: Promise<Cancel>;
reason?: Cancel; reason?: Cancel;
throwIfRequested(): void; throwIfRequested(): void;
} }
export interface CancelTokenSource { interface CancelTokenSource {
token: CancelToken; token: CancelToken;
cancel: Canceler; cancel: Canceler;
} }
export interface AxiosInterceptorOptions { interface AxiosInterceptorOptions {
synchronous?: boolean; synchronous?: boolean;
runWhen?: (config: AxiosRequestConfig) => boolean; runWhen?: (config: AxiosRequestConfig) => boolean;
} }
export interface AxiosInterceptorManager<V> { interface AxiosInterceptorManager<V> {
use<T = V>(onFulfilled?: (value: V) => T | Promise<T>, onRejected?: (error: any) => any, options?: AxiosInterceptorOptions): number; use<T = V>(onFulfilled?: (value: V) => T | Promise<T>, onRejected?: (error: any) => any, options?: AxiosInterceptorOptions): number;
eject(id: number): void; eject(id: number): void;
} }
export class Axios { interface AxiosInstance extends Axios {
constructor(config?: AxiosRequestConfig);
defaults: AxiosDefaults;
interceptors: {
request: AxiosInterceptorManager<AxiosRequestConfig>;
response: AxiosInterceptorManager<AxiosResponse>;
};
getUri(config?: AxiosRequestConfig): string;
request<T = any, R = AxiosResponse<T>, D = any>(config: AxiosRequestConfig<D>): Promise<R>;
get<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<R>;
delete<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<R>;
head<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<R>;
options<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<R>;
post<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
put<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
patch<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
postForm<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
putForm<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
patchForm<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
}
export interface AxiosInstance extends Axios {
<T = any, R = AxiosResponse<T>, D = any>(config: AxiosRequestConfig<D>): AxiosPromise<R>; <T = any, R = AxiosResponse<T>, D = any>(config: AxiosRequestConfig<D>): AxiosPromise<R>;
<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): AxiosPromise<R>; <T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): AxiosPromise<R>;
@@ -300,24 +301,29 @@ export interface AxiosInstance extends Axios {
[key: string]: string | number | boolean | undefined [key: string]: string | number | boolean | undefined
} }
}; };
} }
export interface GenericFormData { interface GenericFormData {
append(name: string, value: any, options?: any): any; append(name: string, value: any, options?: any): any;
} }
export interface GenericHTMLFormElement { interface GenericHTMLFormElement {
name: string; name: string;
method: string; method: string;
submit(): void; submit(): void;
} }
export interface AxiosStatic extends AxiosInstance { type Axios = Axios_;
type AxiosError<T = unknown, D = any> = AxiosError_<T, D>;
type CanceledError<T> = CanceledError_<T>;
interface AxiosStatic extends AxiosInstance {
create(config?: CreateAxiosDefaults): AxiosInstance; create(config?: CreateAxiosDefaults): AxiosInstance;
Cancel: CancelStatic; Cancel: CancelStatic;
CancelToken: CancelTokenStatic; CancelToken: CancelTokenStatic;
Axios: typeof Axios; Axios: typeof Axios_;
AxiosError: typeof AxiosError; AxiosError: typeof AxiosError_;
CanceledError: typeof CanceledError_;
readonly VERSION: string; readonly VERSION: string;
isCancel(value: any): value is Cancel; isCancel(value: any): value is Cancel;
all<T>(values: Array<T | Promise<T>>): Promise<T[]>; all<T>(values: Array<T | Promise<T>>): Promise<T[]>;
@@ -325,8 +331,9 @@ export interface AxiosStatic extends AxiosInstance {
isAxiosError<T = any, D = any>(payload: any): payload is AxiosError<T, D>; isAxiosError<T = any, D = any>(payload: any): payload is AxiosError<T, D>;
toFormData(sourceObj: object, targetFormData?: GenericFormData, options?: FormSerializerOptions): GenericFormData; toFormData(sourceObj: object, targetFormData?: GenericFormData, options?: FormSerializerOptions): GenericFormData;
formToJSON(form: GenericFormData|GenericHTMLFormElement): object; formToJSON(form: GenericFormData|GenericHTMLFormElement): object;
}
} }
declare const axios: AxiosStatic; declare const axios: axios.AxiosStatic;
export default axios; export = axios;
+28 -38
View File
@@ -1,16 +1,6 @@
import axios, { import axios = require('axios');
AxiosRequestConfig,
AxiosResponse,
AxiosError,
AxiosInstance,
AxiosAdapter,
Cancel,
CancelToken,
CancelTokenSource,
Canceler
} from 'axios';
const config: AxiosRequestConfig = { const config: axios.AxiosRequestConfig = {
url: '/user', url: '/user',
method: 'get', method: 'get',
baseURL: 'https://api.example.com/', baseURL: 'https://api.example.com/',
@@ -44,18 +34,18 @@ const config: AxiosRequestConfig = {
host: '127.0.0.1', host: '127.0.0.1',
port: 9000 port: 9000
}, },
cancelToken: new axios.CancelToken((cancel: Canceler) => {}) cancelToken: new axios.CancelToken((cancel: axios.Canceler) => {})
}; };
const nullValidateStatusConfig: AxiosRequestConfig = { const nullValidateStatusConfig: axios.AxiosRequestConfig = {
validateStatus: null validateStatus: null
}; };
const undefinedValidateStatusConfig: AxiosRequestConfig = { const undefinedValidateStatusConfig: axios.AxiosRequestConfig = {
validateStatus: undefined validateStatus: undefined
}; };
const handleResponse = (response: AxiosResponse) => { const handleResponse = (response: axios.AxiosResponse) => {
console.log(response.data); console.log(response.data);
console.log(response.status); console.log(response.status);
console.log(response.statusText); console.log(response.statusText);
@@ -63,7 +53,7 @@ const handleResponse = (response: AxiosResponse) => {
console.log(response.config); console.log(response.config);
}; };
const handleError = (error: AxiosError) => { const handleError = (error: axios.AxiosError) => {
if (error.response) { if (error.response) {
console.log(error.response.data); console.log(error.response.data);
console.log(error.response.status); console.log(error.response.status);
@@ -125,7 +115,7 @@ interface User {
// with default AxiosResponse<T> result // with default AxiosResponse<T> result
const handleUserResponse = (response: AxiosResponse<User>) => { const handleUserResponse = (response: axios.AxiosResponse<User>) => {
console.log(response.data.id); console.log(response.data.id);
console.log(response.data.name); console.log(response.data.name);
console.log(response.status); console.log(response.status);
@@ -221,8 +211,8 @@ axios.request<User, string>({
// Instances // Instances
const instance1: AxiosInstance = axios.create(); const instance1: axios.AxiosInstance = axios.create();
const instance2: AxiosInstance = axios.create(config); const instance2: axios.AxiosInstance = axios.create(config);
instance1(config) instance1(config)
.then(handleResponse) .then(handleResponse)
@@ -274,39 +264,39 @@ axios.create({ headers: { common: { foo: 'bar' } } });
// Interceptors // Interceptors
const requestInterceptorId: number = axios.interceptors.request.use( const requestInterceptorId: number = axios.interceptors.request.use(
(config: AxiosRequestConfig) => config, (config: axios.AxiosRequestConfig) => config,
(error: any) => Promise.reject(error) (error: any) => Promise.reject(error)
); );
axios.interceptors.request.eject(requestInterceptorId); axios.interceptors.request.eject(requestInterceptorId);
axios.interceptors.request.use( axios.interceptors.request.use(
(config: AxiosRequestConfig) => Promise.resolve(config), (config: axios.AxiosRequestConfig) => Promise.resolve(config),
(error: any) => Promise.reject(error) (error: any) => Promise.reject(error)
); );
axios.interceptors.request.use((config: AxiosRequestConfig) => config); axios.interceptors.request.use((config: axios.AxiosRequestConfig) => config);
axios.interceptors.request.use((config: AxiosRequestConfig) => Promise.resolve(config)); axios.interceptors.request.use((config: axios.AxiosRequestConfig) => Promise.resolve(config));
const responseInterceptorId: number = axios.interceptors.response.use( const responseInterceptorId: number = axios.interceptors.response.use(
(response: AxiosResponse) => response, (response: axios.AxiosResponse) => response,
(error: any) => Promise.reject(error) (error: any) => Promise.reject(error)
); );
axios.interceptors.response.eject(responseInterceptorId); axios.interceptors.response.eject(responseInterceptorId);
axios.interceptors.response.use( axios.interceptors.response.use(
(response: AxiosResponse) => Promise.resolve(response), (response: axios.AxiosResponse) => Promise.resolve(response),
(error: any) => Promise.reject(error) (error: any) => Promise.reject(error)
); );
axios.interceptors.response.use((response: AxiosResponse) => response); axios.interceptors.response.use((response: axios.AxiosResponse) => response);
axios.interceptors.response.use((response: AxiosResponse) => Promise.resolve(response)); axios.interceptors.response.use((response: axios.AxiosResponse) => Promise.resolve(response));
// Adapters // Adapters
const adapter: AxiosAdapter = (config: AxiosRequestConfig) => { const adapter: axios.AxiosAdapter = (config: axios.AxiosRequestConfig) => {
const response: AxiosResponse = { const response: axios.AxiosResponse = {
data: { foo: 'bar' }, data: { foo: 'bar' },
status: 200, status: 200,
statusText: 'OK', statusText: 'OK',
@@ -335,19 +325,19 @@ const fn2: (arr: number[]) => string = axios.spread(fn1);
// Promises // Promises
axios.get('/user') axios.get('/user')
.then((response: AxiosResponse) => 'foo') .then((response: axios.AxiosResponse) => 'foo')
.then((value: string) => {}); .then((value: string) => {});
axios.get('/user') axios.get('/user')
.then((response: AxiosResponse) => Promise.resolve('foo')) .then((response: axios.AxiosResponse) => Promise.resolve('foo'))
.then((value: string) => {}); .then((value: string) => {});
axios.get('/user') axios.get('/user')
.then((response: AxiosResponse) => 'foo', (error: any) => 'bar') .then((response: axios.AxiosResponse) => 'foo', (error: any) => 'bar')
.then((value: string) => {}); .then((value: string) => {});
axios.get('/user') axios.get('/user')
.then((response: AxiosResponse) => 'foo', (error: any) => 123) .then((response: axios.AxiosResponse) => 'foo', (error: any) => 123)
.then((value: string | number) => {}); .then((value: string | number) => {});
axios.get('/user') axios.get('/user')
@@ -360,13 +350,13 @@ axios.get('/user')
// Cancellation // Cancellation
const source: CancelTokenSource = axios.CancelToken.source(); const source: axios.CancelTokenSource = axios.CancelToken.source();
axios.get('/user', { axios.get('/user', {
cancelToken: source.token cancelToken: source.token
}).catch((thrown: AxiosError | Cancel) => { }).catch((thrown: axios.AxiosError | axios.Cancel) => {
if (axios.isCancel(thrown)) { if (axios.isCancel(thrown)) {
const cancel: Cancel = thrown; const cancel: axios.Cancel = thrown;
console.log(cancel.message); console.log(cancel.message);
} }
}); });
@@ -378,7 +368,7 @@ source.cancel('Operation has been canceled.');
axios.get('/user') axios.get('/user')
.catch((error) => { .catch((error) => {
if (axios.isAxiosError(error)) { if (axios.isAxiosError(error)) {
const axiosError: AxiosError = error; const axiosError: axios.AxiosError = error;
} }
}); });
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"compilerOptions": { "compilerOptions": {
"module": "es2015", "module": "commonjs",
"lib": ["dom", "es2015"], "lib": ["dom", "es2015"],
"types": [], "types": [],
"moduleResolution": "node", "moduleResolution": "node",