Typescript函数返回承诺
我很难理解如何设置函数的返回类型 问题是这个函数(api调用)可能返回一个对象数组Typescript函数返回承诺,typescript,Typescript,我很难理解如何设置函数的返回类型 问题是这个函数(api调用)可能返回一个对象数组[{},{},{}] 或具有某些属性的对象,而不是数组 { "count": 311, "next": "http://127.0.0.1:8000/....", "previous": "http://127.0.0.1:8000/...", "results": [{}, {}, {}] } 我拥有的是特定的API调用函数 async function fetchStuff(): Promis
[{},{},{}]
或具有某些属性的对象,而不是数组
{
"count": 311,
"next": "http://127.0.0.1:8000/....",
"previous": "http://127.0.0.1:8000/...",
"results": [{}, {}, {}]
}
我拥有的是特定的API调用函数
async function fetchStuff(): Promise<IApiResponse<IStuff[]>> {
return get({ baseProperty: 'stuff' })
}
异步函数fetchStuff():Promise{
返回get({baseProperty:'stuff'})
}
它调用我创建的通用“get”方法
async function get(baseProperty: string): Promise<IApiResponse<any>> {
try {
const { data } = await Vue.$axios.get(baseProperty)
return data
} catch (err) {
console.error(err)
throw err
}
}
异步函数get(baseProperty:string):Promise{
试一试{
const{data}=await Vue.$axios.get(baseProperty)
返回数据
}捕捉(错误){
控制台错误(err)
失误
}
}
我创建的接口如下所示
export interface IApiResponse<T> {
count: number
next: string
previous: string
results: T
}
导出接口IApiResponse{
计数:数字
下一个:字符串
上一个:字符串
结果:T
}
问题是,正如我所说的,并非所有api调用都会返回相同的内容,如何在我的get
方法中允许不同的返回类型?您可以将“get”方法签名更改为:
async function get<T>(baseProperty: string): Promise<IApiResponse<T>>
异步函数get(baseProperty:string):Promise
您可以将“获取”方法签名更改为:
async function get<T>(baseProperty: string): Promise<IApiResponse<T>>
异步函数get(baseProperty:string):Promise
Typescript已经为您介绍了 您可以选择声明新的联合类型
type ActualApiResponse<T> = IApiResponse<T> | T
type actualapireresponse=IApiResponse | T
并按如下方式使用:
async function fetchStuff(): Promise<ActualApiResponse<IStuff[]>> {
// ...
}
异步函数fetchStuff():Promise{
// ...
}
或者简单地采取更直接的方法:
async function fetchStuff(): Promise<IApiResponse<IStuff[]> | IStuff[]> {
// ...
}
异步函数fetchStuff():Promise{
// ...
}
Typescript已经为您介绍了 您可以选择声明新的联合类型
type ActualApiResponse<T> = IApiResponse<T> | T
type actualapireresponse=IApiResponse | T
并按如下方式使用:
async function fetchStuff(): Promise<ActualApiResponse<IStuff[]>> {
// ...
}
异步函数fetchStuff():Promise{
// ...
}
或者简单地采取更直接的方法:
async function fetchStuff(): Promise<IApiResponse<IStuff[]> | IStuff[]> {
// ...
}
异步函数fetchStuff():Promise{
// ...
}
这仍然不能解决我的问题,因为get仍然返回不正确的
承诺,因为它可能只是承诺
或承诺
在这种情况下仍然不能解决我的问题,因为get仍然返回不正确的承诺
,因为它可能只是一个Promise
或Promise
在这种情况下,我认为Typescript已经用“联合类型”覆盖了您。声明键入actualapireresponse=IApiResponse | T
并返回它?使用actualapireresponse
作为返回类型意味着返回类型可以是IApiResponse
或T
,谢谢!很乐意帮忙。我贴出了一个答案,现在我们已经追根究底了。我想Typescript已经用“联合类型”覆盖了你。声明键入actualapireresponse=IApiResponse | T
并返回它?使用actualapireresponse
作为返回类型意味着返回类型可以是IApiResponse
或T
,谢谢!很乐意帮忙。我发布了一个答案,现在我们已经追根究底了。