MST

星途 面试题库

面试题:TypeScript 异步函数剩余参数的错误处理及类型优化

基于上一题的 `fetchData` 函数,现在要求对每个 URL 的获取进行错误处理。如果某个 URL 获取失败,不影响其他 URL 的获取,并且最终返回的数组中,成功获取的数据保持原位置,失败的位置用 `null` 填充。同时,对函数进行类型优化,使得错误类型也能在类型系统中体现。请使用 TypeScript 实现。
29.5万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
interface FetchDataResult<T> {
    data: T | null;
    error: Error | null;
}

async function fetchData<T>(urls: string[]): Promise<FetchDataResult<T>[]> {
    return Promise.all(urls.map(async (url) => {
        try {
            const response = await fetch(url);
            if (!response.ok) {
                throw new Error(`HTTP error! status: ${response.status}`);
            }
            const data = await response.json() as T;
            return { data, error: null };
        } catch (error) {
            return { data: null, error: error as Error };
        }
    }));
}