json - 如何将 fetch API 响应转换为 TypeScript 中的特定类型?
问题描述
我正在尝试将 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]
好像根本没有选角。
你能告诉我我错在哪里,并告诉我该怎么做吗?
非常感谢。
解决方案
预计会出现一些类型转换错误,但没有。
TypeScript 不强制转换。它断言s。这是一种让您有针对性地告诉编译器在运行时会发生什么的方法。如果它在运行时不是那样,它在你身上。
使固定
选项,或者:
- 更改后端响应,使其与您断言的内容相匹配。
- 更改断言以匹配后端返回的内容。
更多的
推荐阅读
- internet-explorer - VBScript sendKeys 已经打开 IE 窗口
- python - 面板数据时间序列(添加带有插值的时间戳)
- c++ - C++ 构造函数中的变量声明和赋值
- python - tkinter get() 无法返回用户输入2
- amazon-web-services - 拒绝除应用程序用户之外的所有人访问 AWS S3 文件
- sql - 从 Microsoft SQL Server 2012 表中删除部分重复行(仅两列中的重复数据)
- reactjs - 使用自定义钩子在 React Typescript 中传递道具
- php - 网络服务器上的 gettext 有多常见?
- python - 如何在事件处理程序(python-socket,sphinx)中保留文档字符串
- sql - 在繁忙时间更改存储过程 - 这会导致锁定和系统崩溃吗?