求问一个ts基础问题 类型“never”上不存在属性“forEach”

刚学ts, 不太懂。
模拟请求了一个本地json, 然后想遍历result, 一直说类型“never”上不存在属性“forEach”。
除非我把res设置成res:any。
不知道应该怎么写。。。头疼搞了一下午。

let arr = ref([] as arrModle[])
const getQuest = async () => {
  const {res} = await requestUrl('/data/array.json')
  if (res) {
    res.forEach((item:Object) => {
    // 报错 类型“never”上不存在属性“forEach”。
    // 此处res的结果为类数组对象[{id:xxx,name:xxx,age:xxx}]
    })
  }
}
import axios from 'axios'
export async function requestUrl(url: string) {
  let res = null
  let e = null
  await axios
    .get(url)
    .then((response) => {
      res = response.data
    })
    .catch((e) => {
      e = e
    })
  return {
    res,
    e
  }
}

想知道除了写:any外, 怎么样才能让那报错消失, 能让我正常遍历类数组对象?

阅读 4.9k
1 个回答
import axios from "axios";

interface Item {
    id: string;
    name: string;
    age: number;
}

export async function requestUrl (url: string): Promise<{ e: null, res: Item[] } | { e: unknown, res: null }> {
    try {
        const { data } = await axios.get<Item[]>(url);

        return {
            e: null,
            res: data,
        };
    }
    catch (e: unknown) {
        return {
            e,
            res: null,
        };
    }
}

const getQuest = async () => {
    const { res } = await requestUrl("/data/array.json");

    if (res) {
        res.forEach(item => {
        });
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏