我正在尝试将API调用的响应转换为我的代码(TypeScript)中的特定类型。但是,我没有成功将响应转换为我的类型,而仅转换为对象。
我尝试了几种方法,特别是此处描述的方法: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的相同响应,即name是一些不能转换为number的字符串),并且期望使用某种类型投放错误,但没有任何错误。 result
仍使用相同的内容和相同的类型创建:
result: Array(3) [Object, Object, Object]
似乎根本没有演员表。
您能告诉我我在哪里错了,然后告诉我该怎么做吗?
非常感谢您。
答案 0 :(得分:0)
预期会发生类型转换错误,但没有。
TypeScript不广播。它断言。这是您认真告诉编译器在运行时会发生什么的一种方式。如果事实并非如此,那它就在您身上。
选项,或者: