การทำข้อผิดพลาดที่ดักจับให้แคบลง (unknown กับ Error)
จัดการข้อผิดพลาดที่ดักจับและระบุเป็น unknown อย่างปลอดภัย
การทำข้อผิดพลาดที่ดักจับให้แคบลง (unknown กับ Error) เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
ยินดีต้อนรับ
การเปลี่ยนแปลงใน TS 4.0
// err is now: unknown
try { doSomething(); }
catch (err) {
// err.message; // Error — cannot access on unknown
}การจำกัดชนิดด้วย instanceof
catch (err) {
if (err instanceof Error) {
console.error(err.message, err.stack);
} else {
console.error('Unknown error:', String(err));
}
}ตัวตรวจสอบชนิด isError
function isError(e: unknown): e is Error {
return e instanceof Error;
}
catch (e) {
if (isError(e)) console.error(e.message);
}การจำกัดชนิดข้อผิดพลาดแบบกำหนดเอง
catch (err) {
if (err instanceof NetworkError) { /* retry */ }
else if (err instanceof AuthError) { /* redirect */ }
else if (err instanceof Error) { /* generic */ }
else throw err;
}useUnknownInCatchVariables
{ "compilerOptions": { "useUnknownInCatchVariables": true } }ข้อผิดพลาดที่เป็นสตริง
catch (err) {
const message = err instanceof Error ? err.message : String(err);
console.error(message);
}ตัวช่วยการโยนข้อผิดพลาดแบบมีชนิด
function throwErr(msg: string, code = 500): never {
const e: AppError = Object.assign(new Error(msg), { statusCode: code });
throw e;
}การโยนข้อผิดพลาดที่ไม่ทราบชนิดซ้ำ
catch (err) {
if (err instanceof KnownError) handle(err);
else throw err; // propagate unknowns
}ขอบเขตข้อผิดพลาดใน React
componentDidCatch(error: unknown, info: ErrorInfo) {
if (error instanceof Error) logError(error.message);
}การทดสอบข้อผิดพลาดที่ดักจับได้
test('catches errors', async () => {
jest.spyOn(api, 'fetch').mockRejectedValue(new NetworkError());
const result = await safeRun();
expect(result.ok).toBe(false);
});ตรวจสอบสั้น ๆ
สรุปทบทวน
คำถามที่พบบ่อย
บทเรียน “การทำข้อผิดพลาดที่ดักจับให้แคบลง (unknown กับ Error)” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การทำข้อผิดพลาดที่ดักจับให้แคบลง (unknown กับ Error)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การทำข้อผิดพลาดที่ดักจับให้แคบลง (unknown กับ Error)”
จัดการข้อผิดพลาดที่ดักจับและระบุเป็น unknown อย่างปลอดภัย คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การทำข้อผิดพลาดที่ดักจับให้แคบลง (unknown กับ Error)” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม
ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คลาสข้อผิดพลาดและลำดับชั้นที่ระบุชนิด
- รูปแบบผลลัพธ์: Ok และ Err
- การทำข้อผิดพลาดที่ดักจับให้แคบลง (unknown กับ Error)
- การจัดการข้อผิดพลาดในโค้ด TypeScript แบบอะซิงก์