Skip to content

Commit

Permalink
Merge b0dccc6 into 07a7b7c
Browse files Browse the repository at this point in the history
  • Loading branch information
d-fischer committed Aug 29, 2017
2 parents 07a7b7c + b0dccc6 commit df06965
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 9 deletions.
18 changes: 9 additions & 9 deletions index.d.ts
Expand Up @@ -3,7 +3,7 @@ export interface AxiosTransformer {
}

export interface AxiosAdapter {
(config: AxiosRequestConfig): AxiosPromise;
(config: AxiosRequestConfig): AxiosPromise<any>;
}

export interface AxiosBasicCredentials {
Expand Down Expand Up @@ -44,8 +44,8 @@ export interface AxiosRequestConfig {
cancelToken?: CancelToken;
}

export interface AxiosResponse {
data: any;
export interface AxiosResponse<T = any> {
data: T;
status: number;
statusText: string;
headers: any;
Expand All @@ -59,7 +59,7 @@ export interface AxiosError extends Error {
response?: AxiosResponse;
}

export interface AxiosPromise extends Promise<AxiosResponse> {
export interface AxiosPromise<T = any> extends Promise<AxiosResponse<T>> {
}

export interface CancelStatic {
Expand Down Expand Up @@ -101,13 +101,13 @@ export interface AxiosInstance {
request: AxiosInterceptorManager<AxiosRequestConfig>;
response: AxiosInterceptorManager<AxiosResponse>;
};
request(config: AxiosRequestConfig): AxiosPromise;
get(url: string, config?: AxiosRequestConfig): AxiosPromise;
request<T = any>(config: AxiosRequestConfig): AxiosPromise<T>;
get<T = any>(url: string, config?: AxiosRequestConfig): AxiosPromise<T>;
delete(url: string, config?: AxiosRequestConfig): AxiosPromise;
head(url: string, config?: AxiosRequestConfig): AxiosPromise;
post(url: string, data?: any, config?: AxiosRequestConfig): AxiosPromise;
put(url: string, data?: any, config?: AxiosRequestConfig): AxiosPromise;
patch(url: string, data?: any, config?: AxiosRequestConfig): AxiosPromise;
post<T = any>(url: string, data?: any, config?: AxiosRequestConfig): AxiosPromise<T>;
put<T = any>(url: string, data?: any, config?: AxiosRequestConfig): AxiosPromise<T>;
patch<T = any>(url: string, data?: any, config?: AxiosRequestConfig): AxiosPromise<T>;
}

export interface AxiosStatic extends AxiosInstance {
Expand Down
39 changes: 39 additions & 0 deletions test/typescript/axios.ts
Expand Up @@ -97,6 +97,45 @@ axios.patch('/user', { foo: 'bar' })
.then(handleResponse)
.catch(handleError);

// Typed methods
interface User {
id: number;
name: string;
}

const handleUserResponse = (response: AxiosResponse<User>) => {
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>('/user?id=12345')
.then(handleUserResponse)
.catch(handleError);

axios.get<User>('/user', { params: { id: 12345 } })
.then(handleUserResponse)
.catch(handleError);

axios.post<User>('/user', { foo: 'bar' })
.then(handleUserResponse)
.catch(handleError);

axios.post<User>('/user', { foo: 'bar' }, { headers: { 'X-FOO': 'bar' } })
.then(handleUserResponse)
.catch(handleError);

axios.put<User>('/user', { foo: 'bar' })
.then(handleUserResponse)
.catch(handleError);

axios.patch<User>('/user', { foo: 'bar' })
.then(handleUserResponse)
.catch(handleError);

// Instances

const instance1: AxiosInstance = axios.create();
Expand Down

0 comments on commit df06965

Please sign in to comment.