satisfies: การอัปแคสต์อย่างปลอดภัย (TypeScript 4.9)
(engineering.ab180.co)-
TypeScript 4.9 มีกำหนดจะเปิดตัวในวันที่ 15 พฤศจิกายน และจะเริ่มเบต้าเทสต์ตั้งแต่วันที่ 20 กันยายน
- ขณะนี้สามารถใช้งานได้แบบ nightly บน Playground
-
มีการเพิ่มคีย์เวิร์ด
satisfiesใน TypeScript 4.9 -
ต่างจากคีย์เวิร์ด
asเดิมตรงที่รองรับการอัปแคสต์อย่างปลอดภัย -
เดิมทีจะทำการอัปแคสต์อย่างปลอดภัยได้ก็ต่อเมื่อมีการกำหนด type ไว้ล่วงหน้าเท่านั้น
-
หากใช้
satisfiesก็จะสามารถทำการอัปแคสต์อย่างปลอดภัยกับ key-value เพียงคู่เดียวภายใน object ได้อย่างสะดวก -
แบบเดิม
// ปลอดภัยแต่ต้องประกาศ type อย่างยุ่งยาก (การประกาศ type)
const object: {
a: number
b: { a: number }
} = {
a: 10,
b: { a: 10, b: 20 } // no error
// b: {} // error
}
// สะดวกแต่ไม่ปลอดภัย (`as`)
const object = {
a: 10,
b: { a: 10, b: 20 } as { a: number } // no error
// b: {} as { a: number } // no error (!!!)
}
satisfies
// สะดวกและปลอดภัย
const object = {
a: 10,
b: { a: 10, b: 20 } satisfies { a: number } // no error
// b: {} satisfies { a: number } // error
}
3 ความคิดเห็น
ส่วนตัวรู้สึกเสียดายเหมือนกันนะว่า ถ้าตัด
const assertionออกแล้วใส่satisfiesเข้าไปแทนน่าจะดีกว่า,,อ๊ะ
const assertion-> เป็นแค่ assertion ธรรมดาครับรู้สึกว่ามันซับซ้อนขึ้นเรื่อย ๆ เลย T_T