gpt4 book ai didi

javascript - 期望服务器响应 promise 中的动态类型

转载 作者:行者123 更新时间:2023-12-01 00:04:36 25 4
gpt4 key购买 nike

期望服务器响应的已解析 Promise 对象可以是 any[]{ data: any[] } 类型。

到目前为止我已经尝试过:

type ServerResponse = any[] | { data: any[] }

但是,当我尝试使用该类型时,我收到如下错误消息:

Property 'data' does not exist on type 'ServerResponse'. 
Property 'data' does not exist on type 'any[]'. ts(2339)

或者,

Property 'filter' does not exist on type 'ServerResponse'.
Property 'filter' does not exist on type '{ data: any[]; }'.ts(2339)

最佳答案

您需要实现类型防护。在下面的代码中,函数 isAnyArray 是一个类型保护。

type ServerResponse = any[] | { data: any[] };

function isAnyArray(response: ServerResponse): response is any[] {
return Array.isArray(response);
}

const someFunction(response: ServerResponse){
if(isAnyArray(response)){
response.forEach(x => {
console.log(x);
});
} else {
response.data.forEach(x => {
console.log(x);
});
}
}

https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types

关于javascript - 期望服务器响应 promise 中的动态类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60469365/

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