TypeScript Academy · บทเรียน

การระบุชนิดการตอบกลับของ Fetch ด้วยตัวห่อหุ้มเจเนอริก

เขียนตัวช่วย fetch ที่ระบุชนิดและส่งคืนชนิดอย่างปลอดภัย

บทเรียน 1 จาก 413 ขั้นตอน

การระบุชนิดการตอบกลับของ Fetch ด้วยตัวห่อหุ้มเจเนอริก เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

เขียนฟังก์ชันตัวช่วย fetch ที่มีชนิดกำกับเพื่อใช้งาน API ของ HTTP อย่างปลอดภัย

ปัญหาของ fetch

API fetch จะส่งคืน Promise และ .json() จะส่งคืน Promise หากไม่มีชนิดกำกับ คุณจะสูญเสียความปลอดภัยทั้งหมด
const res = await fetch('/api/user');
const data = await res.json(); // data: any — unsafe

ตัวครอบ fetch แบบทั่วไป

สร้างตัวช่วย fetch ที่มีชนิดกำกับและคาดว่ารูปแบบของการตอบกลับจะเป็นไปตามที่กำหนด
async function fetchJson<T>(url: string): Promise<T> {
  const res = await fetch(url);
  if (!res.ok) throw new Error(`HTTP error: ${res.status}`);
  return res.json() as Promise<T>;
}

การใช้ตัวครอบ

เรียกใช้ตัวครอบพร้อมอาร์กิวเมนต์ชนิดที่ระบุอย่างชัดเจน
interface User { id: number; name: string; }
const user = await fetchJson<User>('/api/users/1');
console.log(user.name); // typed as string

การเพิ่มการจัดการข้อผิดพลาด

ขยายตัวครอบให้ส่งคืนชนิด Result
async function safeFetch<T>(url: string): Promise<Result<T>> {
  try {
    const res = await fetch(url);
    if (!res.ok) return err(new Error(`HTTP ${res.status}`));
    return ok(await res.json() as T);
  } catch (e) { return err(e as Error); }
}

การกำหนดชนิดตัวเลือกคำขอ

กำหนดชนิดตัวเลือก fetch สำหรับคำขอ POST/PUT
async function postJson<T, B>(url: string, body: B): Promise<T> {
  const res = await fetch(url, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(body),
  });
  return res.json() as Promise<T>;
}

การตรวจสอบการตอบกลับ

ตรวจสอบรูปแบบของการตอบกลับก่อนส่งคืนเป็นค่าที่มีชนิดกำกับ

การกำหนดชนิด AbortController

กำหนดชนิด AbortController และ AbortSignal สำหรับคำขอที่ยกเลิกได้
const ctrl = new AbortController();
const data = await fetchJson<User>('/api/users/1', { signal: ctrl.signal });
setTimeout(() => ctrl.abort(), 5000);

ตัวดักจับ URL พื้นฐาน

สร้างคลาสไคลเอ็นต์ HTTP ที่มี URL พื้นฐาน
class ApiClient {
  constructor(private baseUrl: string) {}
  get<T>(path: string): Promise<T> {
    return fetchJson<T>(`${this.baseUrl}${path}`);
  }
}

ส่วนหัวแบบมีชนิด

กำหนดชนิดส่วนหัวของคำขอและการตอบกลับ
const headers: Record<string, string> = {
  Authorization: `Bearer ${token}`,
  'Content-Type': 'application/json',
};

ชนิดของการแบ่งหน้า

กำหนดชนิดการตอบกลับของ API ที่แบ่งหน้า
interface Paginated<T> { data: T[]; page: number; total: number; }
const result = await fetchJson<Paginated<User>>('/api/users?page=1');

ตรวจสอบสั้น ๆ

`res.json() as Promise` ทำหน้าที่อะไรในตัวครอบ fetch ที่มีชนิดกำกับ

สรุปทบทวน

การกำหนดชนิดการตอบกลับของ Fetch ด้วยตัวครอบแบบทั่วไป: คุณเชี่ยวชาญแนวคิดสำคัญและรูปแบบการใช้งานแล้ว
เริ่มต้นได้ฟรี

เรียนรู้ TypeScript ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
101
บทเรียน
352

คำถามที่พบบ่อย

บทเรียน “การระบุชนิดการตอบกลับของ Fetch ด้วยตัวห่อหุ้มเจเนอริก” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การระบุชนิดการตอบกลับของ Fetch ด้วยตัวห่อหุ้มเจเนอริก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การระบุชนิดการตอบกลับของ Fetch ด้วยตัวห่อหุ้มเจเนอริก”

เขียนตัวช่วย fetch ที่ระบุชนิดและส่งคืนชนิดอย่างปลอดภัย คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การระบุชนิดการตอบกลับของ Fetch ด้วยตัวห่อหุ้มเจเนอริก” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม

ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การระบุชนิดการตอบกลับของ Fetch ด้วยตัวห่อหุ้มเจเนอริก
  2. การตรวจสอบขณะทำงานด้วย Zod
  3. การสร้างโค้ด OpenAPI: ชนิดที่สร้างโดยอัตโนมัติ
  4. ภาพรวมไคลเอนต์ tRPC ที่ปลอดภัยด้านชนิด
← กลับไปที่ TypeScript Academy