Utility Types

ขอทิ้งท้ายคอร์ส TypeScript 101 ด้วย Utility Types หรือ Type ตัวช่วยต่างๆ ที่ TypeScript มีให้ใช้งาน

Partial<Type>

Partial<T> จะรับ Object Type และเปลี่ยน Property ทั้งหมดให้เป็น Optional เพื่อที่เราจะได้ใช้เฉพาะบาง Property ได้

interface Post {
  title: string
  body: string
  imageUrl: string
}

type PostFields = Partial<Post>

// เหมีอนกันกับ
interface PostFields {
  title?: string
  body?: string
  imageUrl?: string
}

function updatePost(post: Post, fields: PostFields) {
  ...
}

const post = { title: "...", body: "...", imageUrl: "..." }

// Update เฉพาะ Body ของ Post
const updatedPost = updatePost(post, { body: "..." }) 

ตัวอย่างนี้ใช้ประโยชน์จาก Partial<Post> เพื่อให้เวลาที่เราอัพเดตตัว Post โดยไม่ต้องใช้ Field ทั้งหมดก็ได้

Pick<Type,Keys>

ใช้เพื่อ Pick (เลือก) เฉพาะ Key ของ Property มาเป็น Object Type ใหม่

Omit<Type,Keys>

ตรงข้ามกับ Pick คือจะยกเว้น Keys ที่ระบุไว้

Record<Keys,Type>

สร้าง Object Type ด้วย Property ที่เป็น Keys และมี Value เป็นประเภทตาม Type

Parameters<FunctionType>

ดึง Type ของ Parameters ออกมาจาก Function ออกมาเป็น Tuple (Array)

ReturnType<FunctionType>

ดึง Type ของค่า Return จาก Function

Utility Types ยังมีอีกหลายตัว ดูทั้งหมดได้จาก Official Docs ซึ่งจะช่วยให้เราใช้ประโยชน์จาก Type ที่มีอยู่แล้ว หรือ Import มาจาก Library ต่างๆ ได้โดยไม่ต้องกำหนด Generic Type ที่ซับซ้อนเองทั้งหมด

Last updated

Was this helpful?