### Describe the bug

`AxiosHeaders` types makes it so trying to call methods on the instance raises a `typescript` compilation error.

<img width="1142" alt="image" src="https://user-images.githubusercontent.com/476069/209943677-fa7775e7-0f23-4b86-88ae-ad28df8c0533.png">

`AxiosRequestConfig.headers` can be either `RawAxiosRequestHeaders` or `AxiosHeaders`. `RawAxiosRequestHeaders`, being an alias of `Record<string, AxiosHeaderValue>` causes methods to not be callable.

### To Reproduce

Invoke any method on `AxiosRequestConfig.headers`.

### Code snippet

```js
const api = axios.create({ ... })

api.interceptors.request.use(req => {
  // Trying to access any method on `req.headers` will result in
  // a "This expression is not callable" TS error
  req.headers.set('foo', 'bar')
})
```


### Expected behavior

Should be able to call any method declared in `AxiosHeaders`.

### Environment

* `axios`: `1.2.2`
* `node`: `18.12.1`
* `typescript`: `4.9.4`
* macOS Ventura `13.1` 

test/module/typings/esm/index.ts
},
    (data: any, headers) => {
      headers['foo'] = 'bar';
      return 'baz'
    }
  ],
  transformResponse: [(data: any, headers: AxiosResponseHeaders) => {
    headers.has('foo');
  }]
});
axios.get('/user', {
  headers: new AxiosHeaders({x:1})
});
axios.get('/user', {
  headers: {
    foo : 1
  }
});
function getRequestConfig1(options: AxiosRequestConfig): AxiosRequestConfig {
  return {
    ...options,
    headers: {
    ...(options.headers as RawAxiosRequestHeaders),
      Authorization: `Bearer ...`,
    },
  };
}
function getRequestConfig2(options: AxiosRequestConfig): AxiosRequestConfig {
  return {
    ...options,