#### Describe the bug
`AxiosRequestHeaders` is currently only a `Record` for primitives `Record<string, string | number | boolean>` and, according to typing cannot have object as values. In reality, headers under keys can objects with other keys. A good example is from README:

```
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
```

#### To Reproduce
F.e. if we were to delete a header entry in `transformRequest` we would get a typescript error `Property 'Authorization' does not exist on type 'string'.`

```js
 return axios({
        method : 'get',
        transformRequest: (data, headers) => {
            delete headers?.common?.Authorization;
        }
    })
```

#### Expected behavior
To be able to access / delete headers under the whole list of keys common, post, etc

#### Environment
 - Axios Version 0.24.0
 - Adapter HTTP

#### Additional context/Screenshots
This is a typescript bug

index.d.ts

export type AxiosRequestHeaders = Record<string, 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 in