DeepStrictTypes: จัดการประเภท TypeScript ที่ซับซ้อนได้ง่ายขึ้น
(github.com/kakasoo)DeepStrictTypes คือชุด utility types สำหรับ TypeScript ที่สร้างขึ้นมาเพื่อให้จัดการอ็อบเจ็กต์แบบซ้อนกันได้อย่างปลอดภัยและสะดวกยิ่งขึ้น
เมื่อใช้ Omit หรือ Pick แบบเดิม มักจะจัดการพร็อพเพอร์ตีที่อยู่ลึกลงไปได้ไม่ค่อยสะอาดนัก แต่ถ้าใช้ DeepStrictOmit และ DeepStrictPick ก็จะสามารถเลือกเฉพาะส่วนที่ต้องการออกมาได้อย่างแม่นยำ
ยกตัวอย่างเช่น ใน type { user: { name: string; age: number } } ถ้าใช้ DeepStrictOmit<Example, 'user.name'> ก็จะถูกแปลงอย่างถูกต้องเป็น { user: { age: number } } ได้ ส่วนถ้าใช้ DeepStrictPick<Example, 'user.name'> ก็จะเหลือไว้เฉพาะส่วนที่จำเป็นในรูปแบบ { user: { name: string } }
สิ่งนี้มีประโยชน์เพราะว่า
✔️ เมื่อต้องการกรองเฉพาะบางฟิลด์จาก API response
✔️ เมื่อต้องการเก็บไว้เฉพาะส่วนที่ต้องการจากอ็อบเจ็กต์แบบซ้อนกัน
ยังได้เพิ่ม runtime utilities แบบทดลองอย่าง deepStrictObjectKeys, deepStrictAssert เข้ามาด้วย
ลองใช้งานดูแล้วส่งฟีดแบ็กมาได้เลยนะครับ/ค่ะ! ความสนใจที่มีต่อโอเพนซอร์สคือกำลังใจสำคัญของผู้พัฒนา!
10 ความคิดเห็น
TypeScript นี่สุดยอดเสมอ
ขอบคุณที่คุณมองเห็นความยอดเยี่ยมของ TypeScript
https://github.com/sindresorhus/type-fest
ขอบคุณ!
กดไลก์
ขอบคุณสำหรับการกดไลก์และแนะนำครับ
ไม่แน่ใจว่าจะมีคนที่ใช้ประเภทข้อมูลหนักขนาดนี้จริงไหม
เลยเริ่มสงสัยว่าเคสการใช้งานจริงเป็นแบบไหน
ผมเคยใช้มันบ่อยตอนทำงานในโดเมนโฆษณา... :)
Facebook, Google... ไม่ว่าอย่างไรก็ตาม สุดท้ายแล้วโดเมนโฆษณาก็แตกต่างกันแค่นิดหน่อย และสามารถทำให้อยู่ในรูปนามธรรมด้วยประเภทที่แทบจะคล้ายกันได้ จึงมักใช้มันตอนรวมบริการที่ต่างกันเข้าเป็นโดเมนเดียวกัน
ดูเหมือนว่ามักจะใช้งานกันบ่อยในลักษณะนั้นเวลานำชนิดข้อมูลเรคคอร์ดจากฐานข้อมูลบนเซิร์ฟเวอร์มาแปรรูปไปมา
ใช่ครับ จริง ๆ แล้วกับฝั่งฟรอนต์เอนด์ก็มักจะไม่ได้รับความเห็นพ้องมากนักครับ