javascript - 返回响应和访问成员时出现打字稿错误
问题描述
此代码工作正常:
const { response } = yield call(makeGetRequest, requestUrl);
return response.data;
但是,这不会:
function makeCall() {
...
const { response } = yield call(makeGetRequest, requestUrl);
return response;
}
function returnData() {
const response = makeCall();
return response.data;
}
打字稿错误在返回 response.data 行中:类型上不存在属性数据。
我认为这是因为它将响应视为任何,但我不知道如何为该方法提供有关对象响应类型的正确信息。我尝试了 typeof 响应并得到了 Object。
解决方案
makeCall 是生成器函数吗?如果您正在使用 using yield
,则必须是这样,所以大概您打算输入function* makeCall()
. 但如果它是一个生成器,那么当你这样做时:
function returnData() {
const response = makeCall();
return response.data;
}
... makeCall() 的返回值是一个迭代器对象。迭代器没有 .data 属性,这就是打字稿给你一个错误的原因。
至于如何纠正这个问题,我需要更多关于你想要做什么的信息。这是 redux-saga 代码吗?如果是这样,您不应该自己调用 saga,而是让它监听动作(例如,使用take、takeEvery 或 takeLatest),当动作发生时,redux saga 将运行 saga。
如果你想从另一个 saga 调用一个 saga,你可以,但你要么需要使用 yield*:
function otherSaga*() {
const response = yield* makeCall()
console.log(response.data);
}
或者调用效果:
function otherSaga*() {
const response = yield call(makeCall);
console.log(response.data);
}
推荐阅读
- sql - 多行而不是一行的 SQL 代码
- python - 使用数据库中不存在的字段嵌套在 Python 和 Marshmallow 中
- caching - Kafka Ignite sink 连接器远程节点数据传输
- flutter - 颤振 | 正文 NestedScrollView 中的 TabView。如何删除一个空白空间?
- angular - Angular Highcharts Wordcloud 颜色数组
- git - Git - '你的分支在“X”提交之前是“X”。'
- rust - 为什么 rust 在仅用于测试时会抱怨未使用的功能?
- javascript - 如何修剪字符串返回以使我的测试通过?
- html - 浏览器如何处理重复属性?
- php - 制作特定类型的 json 的问题