我在 Typescript 中使用 window.fetch ,但我无法将响应直接转换为我的自定义类型:
我通过将 Promise 结果转换为中间“任何”变量来解决这个问题。
这样做的正确方法是什么?
import { Actor } from './models/actor';
fetch(`http://swapi.co/api/people/1/`)
.then(res => res.json())
.then(res => {
// this is not allowed
// let a:Actor = <Actor>res;
// I use an intermediate variable a to get around this...
let a:any = res;
let b:Actor = <Actor>a;
})
原文由 Kokodoko 发布,翻译遵循 CC BY-SA 4.0 许可协议
下面是一些示例,从基本到在请求和/或错误处理之后添加转换:
基本的:
数据转换:
通常,您可能需要在将数据传递给消费者之前对其进行一些调整,例如,解开顶级数据属性。这是直截了当的:
错误处理:
我认为您不应该直接在此服务中直接捕获错误,而只是让它冒泡,但如果需要,您可以执行以下操作:
编辑
自从不久前写下这个答案以来,已经发生了一些变化。如评论中所述,
response.json<T>
不再有效。不确定,找不到它被删除的位置。对于以后的版本,您可以执行以下操作: