#### Describe the bug
When configuring the request method through the config object and using the axios instance method, we cannot define the response type returned by the request.

#### To Reproduce
In version `0.22` I used the following code:
```typescript
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';

const config: AxiosRequestConfig = {
  method: 'get',
  url: 'https://api.github.com/users/jelleschutter/repos?per_page=1'
}

type RepositoryModel = {
  full_name: string;
  description:  string;
}

axios(config).then((res: AxiosResponse<RepositoryModel[]>) => {
  console.log(res.data);
});

```
Which leads to the following error in `0.23`:
```
TS2345: Argument of type '(res: AxiosResponse<RepositoryModel[]>) => void' is not assignable to parameter of type '(value: AxiosResponse<unknown, any>) => void | PromiseLike<void>'.
  Types of parameters 'res' and 'value' are incompatible.
    Type 'AxiosResponse<unknown, any>' is not assignable to type 'AxiosResponse<Repository[], any>'.
      Type 'unknown' is not assignable to type 'Repository[]'.
    14 |
  > 15 |     axios(config).then((res: AxiosResponse<RepositoryModel[]>) => {
       |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    16 |       console.log(res.data);
    17 |     });
```

#### Expected behavior

This issue was resolved in `0.24` however the type can still not be explicitly set like in this example:

```typescript
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';

const config: AxiosRequestConfig = {
  method: 'get',
  url: 'https://api.github.com/users/jelleschutter/repos?per_page=1'
}

type RepositoryModel = {
  full_name: string;
  description:  string;
}

axios<RepositoryModel[]>(config).then(res => {
  console.log(res.data);
});

```

#### Environment
 - Axios Version:  0.23.0
 - Node.js Version: 14.15.4
 - OS: Windows 10

#### Additional context/Screenshots
\-
index.d.ts

export type AxiosRequestHeaders = Record<string, string | number | boolean>;
export type AxiosResponseHeaders = Record<string, string> & {
  "set-cookie"?: string[]
};
export interface AxiosRequestTransformer {
  (data: any, headers: AxiosRequestHeaders): any;
}
export interface AxiosResponseTransformer {
  (data: any, headers?: AxiosResponseHeaders, status?: number): any;
}
export interface AxiosAdapter {
  (config: AxiosRequestConfig): AxiosPromise;
}
export interface AxiosBasicCredentials {
  username: string;
  password: string;
}
export interface AxiosProxyConfig {
  host: string;
  port: number;
  auth?: {
    username: string;
    password: string;
  };
  protocol?: string;
}
export type Method =
  | 'get' | 'GET'
  | 'delete' | 'DELETE'
  | 'head' | 'HEAD'
  | 'options' | 'OPTIONS'
  | 'post' | 'POST'
  | 'put' | 'PUT'
  | 'patch' | 'PATCH'
  | 'purge' | 'PURGE'
  | 'link' | 'LINK'
  | 'unlink' | 'UNLINK';
export type ResponseType =
  | 'arraybuffer'
  | 'blob'
  | 'document'
  | 'json'
  | 'text'
  | 'stream';
  export type responseEncoding =
  | 'ascii' | 'ASCII'
  | 'ansi' | 'ANSI'
  | 'binary' | 'BINARY'
  | 'base64' | 'BASE64'
  | 'base64url' | 'BASE64URL'
  | 'hex' | 'HEX'
  | 'latin1' | 'LATIN1'
  | 'ucs-2' | 'UCS-2'
  | 'ucs2' | 'UCS2'
  | 'utf-8' | 'UTF-8'
  | 'utf8' | 'UTF8'
  | 'utf16le' | 'UTF16LE';
export interface TransitionalOptions {
  silentJSONParsing?: boolean;
  forcedJSONParsing?: boolean;
  clarifyTimeoutError?: boolean;
}
export interface GenericAbortSignal {
  aborted: boolean;
  onabort: ((...args: any) => any) | null;
  addEventListener: (...args: any) => any;
  removeEventListener: (...args: any) => any;
}
export interface FormDataVisitorHelpers {
  defaultVisitor: FormDataVisitor;
  convertValue: (value: any) => any;
  isVisitable: (value: any) => boolean;
}
export interface FormDataVisitor {
  (value: any, key: string | number, path: null | Array<string | number>, helpers: FormDataVisitorHelpers): boolean;
}
export interface For