gpt4 book ai didi

angular 4 httpclient - 接口(interface)未强制执行的http响应对象类型

转载 作者:搜寻专家 更新时间:2023-10-30 21:28:41 27 4
gpt4 key购买 nike

我有一个返回以下响应的 API 端点:

{
"response": [ { "label": "mylabel", "name": "myname" } ],
"status": 200
}

起初我创建了一个与这个结构完全匹配的接口(interface),但后来,为了测试,我把它改成这样:

export interface ListResponse {
response: number;
status: boolean;
}

this.http.get<ListResponse>('/api/list.php').subscribe(data => {
console.log(data.response)
console.log(data.status)
});

由于响应显然与接口(interface)属性类型不匹配,我原以为会收到 typescript 错误,但我能够像往常一样访问这些字段。类型安全呢,这不是个问题吗?

最佳答案

在这种情况下不是。编译器时的 typescript 无法知道服务器的响应是否与您提供的接口(interface)匹配。所以它不能抛出异常。来自服务器的响应实际上可以是字符串或文件。检查这个的唯一方法是在运行时,当您实际从服务器获得响应时。但目前还没有 TypeScript,只有纯 JavaScript。

已编辑:
这样做的目的是,在处理结果时进行类型检查:

for (var o of data.response)

如果在接口(interface)中将响应定义为数组,则将起作用。如果定义为数字, typescript 将抛出错误。您还可以访问对象 o 及其字段 labelname

关于angular 4 httpclient - 接口(interface)未强制执行的http响应对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47218390/

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