คลาสข้อผิดพลาดและลำดับชั้นที่ระบุชนิด
สร้างคลาสข้อผิดพลาดแบบกำหนดเองด้วยชนิดที่มีตัวแยกแยะ
คลาสข้อผิดพลาดและลำดับชั้นที่ระบุชนิด เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
ยินดีต้อนรับ
การขยาย Error
class AppError extends Error {
constructor(public message: string, public statusCode = 500) {
super(message);
this.name = 'AppError';
}
}ลำดับชั้นของข้อผิดพลาด
class NotFoundError extends AppError {
constructor(resource: string) { super(`${resource} not found`, 404); }
}
class ValidationError extends AppError {
constructor(public fields: string[]) { super('Validation failed', 400); }
}การใช้ instanceof
try { doSomething(); }
catch (err) {
if (err instanceof NotFoundError) res.status(404).json({ error: err.message });
else if (err instanceof ValidationError) res.status(400).json({ fields: err.fields });
}ยูเนียนข้อผิดพลาดที่จำแนกด้วยตัวระบุ
type AppError =
| { kind: 'not_found'; resource: string }
| { kind: 'unauthorized' }
| { kind: 'validation'; fields: string[] };ฟังก์ชันสร้างข้อผิดพลาด
const errors = {
notFound: (r: string) => new NotFoundError(r),
unauthorized: () => new AppError('Unauthorized', 401),
};การทำให้ข้อผิดพลาดเป็นอนุกรม
function serializeError(err: AppError): Record<string, unknown> {
return { error: err.message, code: err.statusCode, name: err.name };
}การกำหนด this.name
class MyError extends Error {
readonly name = 'MyError' as const;
constructor(msg: string) { super(msg); }
}ข้อผิดพลาดใน Express
app.use((err: unknown, req: Request, res: Response, next: NextFunction) => {
if (err instanceof AppError) {
res.status(err.statusCode).json({ error: err.message });
} else {
res.status(500).json({ error: 'Internal error' });
}
});รูปแบบการบันทึกข้อผิดพลาด
function logError(err: unknown): void {
if (err instanceof Error) console.error(`[${err.name}] ${err.message}`);
else console.error('Unknown error:', err);
}การทดสอบชนิดข้อผิดพลาด
test('throws NotFoundError for missing user', async () => {
await expect(getUser(999)).rejects.toThrow(NotFoundError);
});ตรวจสอบสั้น ๆ
สรุปทบทวน
คำถามที่พบบ่อย
บทเรียน “คลาสข้อผิดพลาดและลำดับชั้นที่ระบุชนิด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คลาสข้อผิดพลาดและลำดับชั้นที่ระบุชนิด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คลาสข้อผิดพลาดและลำดับชั้นที่ระบุชนิด”
สร้างคลาสข้อผิดพลาดแบบกำหนดเองด้วยชนิดที่มีตัวแยกแยะ คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “คลาสข้อผิดพลาดและลำดับชั้นที่ระบุชนิด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม
ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คลาสข้อผิดพลาดและลำดับชั้นที่ระบุชนิด
- รูปแบบผลลัพธ์: Ok และ Err
- การทำข้อผิดพลาดที่ดักจับให้แคบลง (unknown กับ Error)
- การจัดการข้อผิดพลาดในโค้ด TypeScript แบบอะซิงก์