0Pricing
TypeScript Academy · บทเรียน

Promise<T> และการกำหนดชนิดข้อมูล async/await

ทำความเข้าใจโครงสร้าง Promise กำหนดชนิดข้อมูลให้ฟังก์ชัน async และทำงานกับค่าที่รอผลแล้วอย่างปลอดภัย

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

บทนำ

เป้าหมาย: อ่านและเขียนโค้ดที่ใช้ Promise<T> คุณจะกำหนดชนิดให้ฟังก์ชัน async รอค่า และรักษาชนิดของข้อผิดพลาดไว้

พื้นฐาน Promise

Promise<T> ใช้ห่อค่าที่จะได้รับในภายหลัง ใช้ Promise เมื่อไม่มีค่าที่ได้รับการแก้ไข

function delay(ms: number): Promise<void> {
  return new Promise(resolve => setTimeout(resolve, ms));
}

const p: Promise<void> = delay(100);

p.then(() => console.log("done"));

การระบุชนิดค่าที่ส่งกลับของ async

ฟังก์ชัน async จะส่งกลับ Promise<U> เสมอ ภายในฟังก์ชันจะ ส่งกลับ U และ TS จะห่อค่าให้โดยอัตโนมัติ

async function fetchNumber(): Promise<number> {
  await delay(10);
  return 42; // inferred as Promise<number>
}

fetchNumber().then(n => console.log(n.toFixed(0)));

การระบุชนิดของ await

await จะแกะค่าออกจาก Promise และให้ชนิดข้อมูลภายใน เช่น string ในที่นี้ ทำให้คุณได้รับ IntelliSense ที่ถูกต้อง

async function readUserName(id: number): Promise<string> {
  await delay(5);
  return `user-${id}`;
}

async function main(): Promise<void> {
  const name = await readUserName(7); // name: string
  console.log(name.toUpperCase());
}

main();

การระบุชนิดของ Promise.all

Promise.all จะรักษาชนิดของทูเพิลไว้ และรอแต่ละองค์ประกอบจนได้ชนิดข้อมูลภายในให้คุณ

async function both() {
  const [n, s] = await Promise.all([
    fetchNumber(),
    readUserName(1),
  ]);
  console.log(n, s);
}

both();

การระบุชนิดของข้อผิดพลาด

ในบล็อก catch ควรเริ่มด้วย unknown จากนั้นจำกัดชนิดด้วย instanceof Error หรือการตรวจสอบแบบกำหนดเอง ก่อนเข้าถึงฟิลด์ต่าง ๆ

async function safe() {
  try {
    await delay(1);
    throw new Error("boom");
  } catch (e: unknown) {
    if (e instanceof Error) {
      console.error("Handled:", e.message);
    } else {
      console.error("Unknown error", e);
    }
  }
}

safe();

ตรวจสอบชนิดค่าที่ async ส่งกลับ

ตรวจสอบอย่างรวดเร็ว: ฟังก์ชัน async ที่ส่งกลับค่าชนิด U จะมีชนิดค่าที่ส่งกลับเป็นอะไร

สรุป

สรุป: Promise<T> ใช้ห่อค่าที่จะได้รับภายหลัง ฟังก์ชัน async ส่งกลับ Promise<U> ส่วน await จะแกะชนิดข้อมูลออก และข้อผิดพลาดใน catch ควรเริ่มต้นเป็น unknown

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

บทเรียน “Promise<T> และการกำหนดชนิดข้อมูล async/await” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Promise<T> และการกำหนดชนิดข้อมูล async/await” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Promise<T> และการกำหนดชนิดข้อมูล async/await”

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

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

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

บทเรียน “Promise<T> และการกำหนดชนิดข้อมูล async/await” ใช้เวลานานแค่ไหน

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

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

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

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

  1. Promise และการกำหนดชนิดข้อมูล async/await
  2. การกำหนดชนิดข้อมูลข้อผิดพลาด (unknown) และการจำกัดชนิดข้อมูลใน catch
  3. รูปแบบการทำงานพร้อมกัน (all/settled/race) และชนิดข้อมูล
← กลับไปที่ TypeScript Academy