Fetch API 类型;Response.json() 泛型
使用类型正确的 Fetch API,并通过 Response.json () 泛型安全地解析 JSON 负载。
Fetch API 类型;Response.json() 泛型 是 CoddyKit 上的免费 TypeScript Academy 课时。 这是第 1 节课,共 2 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 TypeScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 TypeScript Academy 课程共包含 2 节课。
简介
目标:使用 fetch 调用 API,安全地处理响应,并将泛型与 Response.json() 结合使用。
基本 fetch
fetch 返回一个 Promise<Response>。对于纯文本响应体,请使用 res.text()。
async function getText() {
const res = await fetch("/hello.txt");
const text = await res.text();
console.log(text);
}res.json() 默认行为
res.json() 会解析响应体,但默认返回类型是 any,不具备编译时安全性。
async function getData() {
const res = await fetch("/data.json");
const data = await res.json();
console.log(data);
}res.json<T>()
结合接口调用 res.json<T>()。TS 会检查您是否只使用 User 中存在的有效字段。
interface User { id: number; name: string }
async function getUser() {
const res = await fetch("/user.json");
const user = await res.json<User>();
console.log(user.id, user.name);
}类型安全
将泛型与 json<T> 结合使用时,TypeScript 会阻止您访问不存在的字段。
interface Product { id: number; price: number }
async function getProduct() {
const res = await fetch("/product.json");
const p = await res.json<Product>();
// console.log(p.unknown); // Error: unknown does not exist
}数组类型
泛型同样适用于数组,例如 Todo[]。TS 会确保每个项目都具有正确的结构。
interface Todo { id: number; done: boolean }
async function getTodos() {
const res = await fetch("/todos.json");
const todos = await res.json<Todo[]>();
todos.forEach(t => console.log(t.id, t.done));
}json<T>() 检查
快速检查:为 response.json<T>() 提供类型参数有什么好处?
回顾
回顾:fetch 返回 Response。默认的 json() 类型是 any。添加泛型 json<T> 即可获得类型安全。
常见问题解答
「Fetch API 类型;Response.json() 泛型」课时是免费的吗?
是的 — 「Fetch API 类型;Response.json() 泛型」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 TypeScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 TypeScript Academy 课程共包含 2 节课。
「Fetch API 类型;Response.json() 泛型」这节课中我会学到什么?
使用类型正确的 Fetch API,并通过 Response.json () 泛型安全地解析 JSON 负载。 你通过在浏览器中直接运行的动手代码来练习 TypeScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 TypeScript Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 TypeScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 2 节。
「Fetch API 类型;Response.json() 泛型」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 TypeScript Academy 课中编写并运行代码吗?
能。每节 TypeScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Fetch API 类型;Response.json() 泛型
- 使用 zod 进行运行时校验(入门)