<h4 dir="auto">Describe the issue</h4>
<p dir="auto">The type of the <code class="notranslate">.data</code> of the response is the same type of what was submitted in the request.</p>
<h4 dir="auto">Example Code</h4>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="const form: FormData = new FormData();

const { data } = await axiosInstance.request({data: form});

// The type of data is `FormData`, why? It should be any or something else. The response is never FormData."><pre class="notranslate"><span class="pl-k">const</span> <span class="pl-s1">form</span>: <span class="pl-smi">FormData</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-smi">FormData</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

<span class="pl-k">const</span> <span class="pl-kos">{</span> data <span class="pl-kos">}</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-s1">axiosInstance</span><span class="pl-kos">.</span><span class="pl-en">request</span><span class="pl-kos">(</span><span class="pl-kos">{</span><span class="pl-c1">data</span>: <span class="pl-s1">form</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

<span class="pl-c">// The type of data is `FormData`, why? It should be any or something else. The response is never FormData.</span></pre></div>
<h4 dir="auto">Expected behavior, if applicable</h4>
<p dir="auto">Type of <code class="notranslate">data</code> in the response should be <code class="notranslate">any</code> or something else.</p>
<h4 dir="auto">Environment</h4>
<ul dir="auto">
<li>Axios Version: 0.22.0</li>
<li>Adapter: HTTP</li>
<li>Browser: N/A</li>
<li>Browser Version: N/A</li>
<li>Node.js Version: 16.9.1</li>
<li><em>TypeScript Version: 4.4.3</em></li>
<li>OS: Linux</li>
<li>Additional Library Versions: N/A</li>
</ul>
<h4 dir="auto">Additional context/Screenshots</h4>
<p dir="auto">N/A</p>
<h4 dir="auto">Describe the bug</h4>
<p dir="auto">In <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="629537972" data-permission-text="Title is private" data-url="https://github.com/axios/axios/issues/2995" data-hovercard-type="pull_request" data-hovercard-url="/axios/axios/pull/2995/hovercard" href="https://github.com/axios/axios/pull/2995">#2995</a> merge request, there was introduced a bug.</p>
<p dir="auto">There came 2 issues.</p>
<ol dir="auto">
<li>input and output types have to be the same.</li>
<li>existing usages are broken</li>
</ol>
<h4 dir="auto">To Reproduce</h4>
<p dir="auto">pass input and output type to axios.post</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="interface Input {
  name: string;
}
interface Output {
  value: string;
}
/* existing usages are broken
 * TS2345: Argument of type '{ name: string; }' is not assignable to parameter of type 'undefined'.
 */
const { data } = await axios.post&lt;Output&gt;('url', {
  name: 'hello',
});
/* Input and output have to be the same type
 * TS2345: Argument of type '{ name: string; }' is not assignable to parameter of type 'AxiosResponse&lt;Output&gt;'.   
 * Object literal may only specify known properties, and 'name' does not exist in type 'AxiosResponse&lt;Output&gt;'.
 */
const { data } = await axios.post&lt;Input, AxiosResponse&lt;Output&gt;&gt;('url', {
  name: 'hello',
});"><pre class="notranslate"><span class="pl-k">interface</span> <span class="pl-smi">Input</span> <span class="pl-kos">{</span>
  <span class="pl-c1">name</span>: <span class="pl-smi">string</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span>
<span class="pl-k">interface</span> <span class="pl-smi">Output</span> <span class="pl-kos">{</span>
  <span class="pl-c1">value</span>: <span class="pl-smi">string</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span>
<span class="pl-c">/* existing usages are broken</span>
<span class="pl-c"> * TS2345: Argument of type '{ name: string; }' is not assignable to parameter of type 'undefined'.</span>
<span class="pl-c"> */</span>
<span class="pl-k">const</span> <span class="pl-kos">{</span> data <span class="pl-kos">}</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-s1">axios</span><span class="pl-kos">.</span><span class="pl-c1">post</span><span class="pl-kos">&lt;</span><span class="pl-smi">Output</span><span class="pl-kos">&gt;</span><span class="pl-kos">(</span><span class="pl-s">'url'</span><span class="pl-kos">,</span> <span class="pl-kos">{</span>
  <span class="pl-c1">name</span>: <span class="pl-s">'hello'</span><span class="pl-kos">,</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-c">/* Input and output have to be the same type</span>
<span class="pl-c"> * TS2345: Argument of type '{ name: string; }' is not assignable to parameter of type 'AxiosResponse&lt;Output&gt;'.   </span>
<span class="pl-c"> * Object literal may only specify known properties, and 'name' does not exist in type 'AxiosResponse&lt;Output&gt;'.</span>
<span class="pl-c"> */</span>
<span class="pl-k">const</span> <span class="pl-kos">{</span> data <span class="pl-kos">}</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-s1">axios</span><span class="pl-kos">.</span><span class="pl-c1">post</span><span class="pl-kos">&lt;</span><span class="pl-smi">Input</span><span class="pl-kos">,</span> <span class="pl-smi">AxiosResponse</span><span class="pl-kos">&lt;</span><span class="pl-smi">Output</span><span class="pl-kos">&gt;</span><span class="pl-kos">&gt;</span><span class="pl-kos">(</span><span class="pl-s">'url'</span><span class="pl-kos">,</span> <span class="pl-kos">{</span>
  <span class="pl-c1">name</span>: <span class="pl-s">'hello'</span><span class="pl-kos">,</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
<h4 dir="auto">Expected behavior</h4>
<p dir="auto">No type errors.</p>
<h4 dir="auto">Environment</h4>
<ul dir="auto">
<li>Axios Version 0.22.0</li>
<li>Adapter HTTP</li>
<li>Browser Chrome</li>
<li>Browser Version 94.0.4606.61</li>
<li>Node.js Version v14.17.5</li>
<li>OS: Windows 10</li>
<li>Additional Library Versions none</li>
</ul>
<h4 dir="auto">Additional context/Screenshots</h4>