// Created on savesnippets.com ยท https://savesnippets.com/4JZNrB7dI1PtaZ async function fetchAll(urls: string[]): Promise<{ url: string; data?: T; error?: unknown }[]> { const results = await Promise.allSettled( urls.map(async (url) => { const r = await fetch(url); if (!r.ok) throw new Error(`HTTP ${r.status}`); return r.json() as Promise; }) ); return results.map((r, i) => r.status === 'fulfilled' ? { url: urls[i]!, data: r.value } : { url: urls[i]!, error: r.reason } ); } const out = await fetchAll<{ id: number }>(['/a.json', '/b.json', '/c.json']); const succeeded = out.filter((r): r is typeof r & { data: { id: number } } => 'data' in r);