### 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
.catch(handleError);
instance1.post('/user', { foo: 'bar' }, { headers: { 'X-FOO': 'bar' } })
  .then(handleResponse)
  .catch(handleError);
axios.defaults.headers['X-FOO'];
axios.defaults.baseURL = 'https://api.example.com/';
axios.defaults.headers.common['Accept'] = 'application/json';
axios.defaults.headers.post['X-FOO'] = 'bar';
axios.defaults.timeout = 2500;
instance1.defaults.baseURL = 'https://api.example.com/';
instance1.defaults.headers.common['Accept'] = 'application/json';
instance1.defaults.headers.post['X-FOO'] = 'bar';
instance1.defaults.timeout = 2500;
axios.create({ headers: { foo: 'bar' } });
axios.create({ headers: { common: { foo: 'bar' } } });
axios.create({
  headers: {
    'Content-Type': 'application/json',
  },
  formSerializer: {
    indexes: null,
  },
  paramsSerializer: {
    indexes: null,
  },
});
const requestInterceptorId: number = axios.interceptors.request.use(
  async (config: AxiosRequestConfig) => {
    await axios.get('/foo', {
      headers: config.headers