如何将 fetch API 响应转换为 TypeScript 中的特定类型?
How to cast fetch API response to a specific type in 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 的相同响应,即名称是一些不可转换为的字符串number) 并预计会出现一些类型转换错误,但有 none。 result
仍然使用相同的内容和相同的类型创建:
result: Array(3) [Object, Object, Object]
好像完全没有选角
你能告诉我我错在哪里,并告诉我该怎么做吗?
非常感谢。
expected some type casting error, but there was none.
TypeScript 不会 cast。它 断言 s。这是一种 有力地 告诉编译器运行时会发生什么的方法。如果在运行时结果不是这样,那就由你了。
修复
选项,或者:
- 更改后端响应,使其与您的声明相匹配。
- 更改断言以匹配后端返回的内容。
更多
我正在尝试将 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 的相同响应,即名称是一些不可转换为的字符串number) 并预计会出现一些类型转换错误,但有 none。 result
仍然使用相同的内容和相同的类型创建:
result: Array(3) [Object, Object, Object]
好像完全没有选角
你能告诉我我错在哪里,并告诉我该怎么做吗?
非常感谢。
expected some type casting error, but there was none.
TypeScript 不会 cast。它 断言 s。这是一种 有力地 告诉编译器运行时会发生什么的方法。如果在运行时结果不是这样,那就由你了。
修复
选项,或者:
- 更改后端响应,使其与您的声明相匹配。
- 更改断言以匹配后端返回的内容。