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

รูปแบบผลลัพธ์: Ok และ Err

ส่งข้อผิดพลาดกลับเป็นค่าแทนการโยนข้อผิดพลาด

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

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

รูปแบบผลลัพธ์จะส่งคืนข้อผิดพลาดเป็นค่า ทำให้จัดการข้อผิดพลาดได้อย่างปลอดภัยตามชนิดโดยไม่ต้องใช้ try/catch

ชนิดผลลัพธ์

กำหนดชนิด Result แบบทั่วไปที่มีรูปแบบ Ok และ Err
type Ok<T> = { ok: true; value: T };
type Err<E = Error> = { ok: false; error: E };
type Result<T, E = Error> = Ok<T> | Err<E>;

ตัวสร้างตัวช่วย

สร้างตัวช่วย ok() และ err() เพื่อให้โค้ดอ่านง่ายขึ้น
const ok = <T>(value: T): Ok<T> => ({ ok: true, value });
const err = <E>(error: E): Err<E> => ({ ok: false, error });

การส่งคืนผลลัพธ์

ส่งคืนค่า Result จากฟังก์ชันแทนการโยนข้อผิดพลาด
async function fetchUser(id: number): Promise<Result<User>> {
  try {
    const user = await db.findUser(id);
    if (!user) return err(new Error('Not found'));
    return ok(user);
  } catch (e) { return err(e as Error); }
}

การใช้งานผลลัพธ์

ตรวจสอบแฟล็ก ok ก่อนใช้งานค่า
const result = await fetchUser(1);
if (result.ok) {
  console.log(result.value.name); // User
} else {
  console.error(result.error.message);
}

ตัวช่วย mapResult

แมปค่าผลลัพธ์ที่สำเร็จเพื่อแปลงค่า
function mapResult<T, U, E>(r: Result<T, E>, fn: (v: T) => U): Result<U, E> {
  return r.ok ? ok(fn(r.value)) : r;
}

ตัวช่วย flatMapResult

เชื่อมโยงฟังก์ชันที่ส่งคืนค่า Result อย่างปลอดภัย
function flatMap<T, U, E>(r: Result<T, E>, fn: (v: T) => Result<U, E>): Result<U, E> {
  return r.ok ? fn(r.value) : r;
}

ผลลัพธ์เทียบกับข้อยกเว้น

ข้อยกเว้นทำงานโดยปริยายและไม่มีชนิดกำกับ ส่วนผลลัพธ์เป็นค่าที่ระบุไว้อย่างชัดเจนในลายเซ็นชนิด

การรองรับจากไลบรารี

ไลบรารีอย่าง neverthrow, true-myth และ fp-ts มีชนิด Result ที่พร้อมใช้ในงานจริง

ผลลัพธ์ในตัวจัดการ API

ใช้ค่า Result ในตัวจัดการของ Express เพื่อส่งต่อข้อผิดพลาดได้อย่างเป็นระเบียบ
app.get('/users/:id', async (req, res) => {
  const result = await fetchUser(parseInt(req.params.id));
  if (result.ok) res.json(result.value);
  else res.status(404).json({ error: result.error.message });
});

ผลลัพธ์แบบอะซิงโครนัส

ใช้ Promise> เพื่อผสานการทำงานแบบอะซิงโครนัสเข้ากับรูปแบบ Result
type AsyncResult<T, E = Error> = Promise<Result<T, E>>;

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

ข้อได้เปรียบหลักของรูปแบบ Result เหนือการโยนข้อยกเว้นคืออะไร

สรุปทบทวน

รูปแบบ Result: Ok และ Err: คุณได้เรียนรู้แนวคิดสำคัญของหัวข้อนี้และวิธีนำไปใช้ในโปรเจกต์ TypeScript จริงแล้ว

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

บทเรียน “รูปแบบผลลัพธ์: Ok และ Err” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “รูปแบบผลลัพธ์: Ok และ Err”

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

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

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

บทเรียน “รูปแบบผลลัพธ์: Ok และ Err” ใช้เวลานานแค่ไหน

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

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

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

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

  1. คลาสข้อผิดพลาดและลำดับชั้นที่ระบุชนิด
  2. รูปแบบผลลัพธ์: Ok และ Err
  3. การทำข้อผิดพลาดที่ดักจับให้แคบลง (unknown กับ Error)
  4. การจัดการข้อผิดพลาดในโค้ด TypeScript แบบอะซิงก์
← กลับไปที่ TypeScript Academy