0Pricing
TypeScript Academy · 课时

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. Fetch API 类型;Response.json() 泛型
  2. 使用 zod 进行运行时校验(入门)
← 返回 TypeScript Academy