gpt4 book ai didi

json - 如何将 fetch API 响应转换为 TypeScript 中的特定类型?

转载 作者:行者123 更新时间:2023-12-04 15:45:26 25 4
gpt4 key购买 nike

我正在尝试将 API 调用的响应转换为我的代码 (TypeScript) 中的特定类型。但是,我没有成功地将响应转换为我的类型,而只能转换为 Object。

我尝试了几种方法,特别是这里描述的:https://www.carlrippon.com/fetch-with-async-await-and-typescript/

类型:

export interface MyType{
id: number;
name: string;
date: Date;
}


获取代码:
export default class api {
static async get<T>(url: string): Promise<T> {
return new Promise(resolve => {
fetch(url)
.then(response => response.json())
.then(body => {
resolve(body);
});
});
}
}

调用者:
const result = await api.get<MyType[]>(
"my-url-here"
);

我期待 result类型为 MyType[] ,但它是 Object[] . (所有字段)

此外,我尝试更改 name 的类型字段到 number (虽然始终保持来自 API 的相同响应,即名称是一些不可转换为数字的字符串)并且预期会出现一些类型转换错误,但没有。 result仍然使用相同的内容和相同的类型创建: result: Array(3) [Object, Object, Object]
似乎根本没有任何类型转换。

你能告诉我我错在哪里,告诉我该怎么做吗?

非常感谢。

最佳答案

expected some type casting error, but there was none.



TypeScript 不会强制转换。它断言。这是一种有力地告诉编译器在运行时会发生什么的方法。如果它在运行时不是这样,它就在你身上。

使固定

选项,或者:
  • 更改后端响应,使其与您声明的内容相匹配。
  • 更改断言以匹配后端返回的内容。

  • 更多的
  • TypeScript Assertion
  • 关于json - 如何将 fetch API 响应转换为 TypeScript 中的特定类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55960602/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com