การยืนยันประเภท บอก compiler ว่า "เชื่อใจฉัน ค่านี้เป็นประเภท X" โดยใช้ as มันไม่มีการแปลงหรือการตรวจสอบในเวลาทำงาน — มันเพียงเปลี่ยนวิธีที่ compiler ปฏิบัติต่อค่า
ts
el = .() ;
el. = ;
data = .(str) ;
การยืนยันประเภท บอก compiler ว่า "เชื่อใจฉัน ค่านี้เป็นประเภท X" โดยใช้ as มันไม่มีการแปลงหรือการตรวจสอบในเวลาทำงาน — มันเพียงเปลี่ยนวิธีที่ compiler ปฏิบัติต่อค่า
el = .() ;
el. = ;
data = .(str) ;
การยืนยันจะสร้างสิ่งที่ compiler พิจารณา — หากคุณผิด คุณจะได้รับ runtime crash โดยไม่มีคำเตือน:
const x = "hello" as unknown as number; // double assertion — compiler stops complaining
x.toFixed(2); // 💥 runtime error: x.toFixed is not a function
การยืนยันจะไม่ทำให้ค่านั้นเป็นประเภทดังกล่าว มันเพียงแค่ปิดเครื่องตรวจสอบ คุณได้นำความรับผิดชอบในเรื่องความถูกต้องออกจาก compiler
// 1. type guard — actually verify at runtime
if (typeof input === "string") { /* input is string, proven */ }
// 2. validation library (zod) for external data
const user = UserSchema.parse(data); // throws if shape is wrong
as const นั้นต่างกันconst point = { x: 1 } as const; // not a risky cast — narrows to literal/readonly
การยืนยันบางครั้งจำเป็น (DOM APIs การจำกัด unknown ที่คุณตรวจสอบแล้ว) แต่แต่ละอันคือสถานที่ที่ compiler ไม่สามารถปกป้องคุณได้
นำทางด้วยประเภท guards หรือ schema validation สำหรับข้อมูลที่ไม่น่าเชื่อถือ และถือว่าทุก as เป็นสิ่งเล็กน้อย โดยเจตนา "ฉันรู้ดีกว่า" ที่คุณต้องแน่ใจ