Describe the bug
The following code should fail type checking but does not:
interface SomeBody {
field1: string;
field2: string;
}
async function fetchSomething(): Promise<SomeBody > {
// Buggy code is missing a call to .data on the AxiosResponse
return await axios.get('http://example.com/some/api'); // TypeScript is fine, but it should not be
}
If you introduce an intermediate variable typechecking does fail:
async function fetchSomething(): Promise< SomeBody > {
const response = await axios.get('http://example.com/some/api');
return response; // TS2322: Type AxiosResponse<any, any> is not assignable to type SomeBody
}
To Reproduce
See https://codesandbox.io/p/sandbox/axios-ts-bug-gty2pg?file=%2Findex.ts%3A20%2C1
Code snippet
- No response*
Expected behavior
The following code fails type checking as it does when an intermediate variable is introduced:
interface SomeBody {
field1: string;
field2: string;
}
async function fetchSomething(): Promise<SomeBody > {
// Buggy code is missing a call to .data on the AxiosResponse
return await axios.get('http://example.com/some/api'); // TypeScript is fine, but it should not be
}
See microsoft/TypeScript#56532 for a possible fix to the typings.
Axios Version
1.6.2
Adapter Version
- No response*
Browser
N/A
Browser Version
N/A
Node.js Version
18.18.2
OS
MacOS
Additional Library Versions
N/A
Additional context/Screenshots
- No response*
4条答案
按热度按时间ie3xauqp1#
你好,@josephearl 。我想为这个问题做出贡献,你能把我分配到这个任务吗?谢谢。
pdkcd3nj2#
@Vayras 我不是axios的维护者,所以不能分配问题,但请随意处理,因为据我所知,没有人在处理这个问题,我相信一个PR会受到欢迎。
vdzxcuhz3#
感谢你告诉我,我一定会解决这个问题。
vom3gejh4#
我们能确定这是Axios的bug吗?我向Bard询问了这个问题。请告诉我你的看法。
提示1: https://g.co/bard/share/f351e5b2eeec
提示2: https://g.co/bard/share/a263ce7031ff
这似乎就是TypeScript在遇到异步函数时的行为。