Skip to content

Mapped Type

Mapped Type ใน TypeScript ช่วยให้คุณสร้างชนิดใหม่จากชนิดที่มีอยู่ด้วยการแปลงพร็อพเพอร์ตีแต่ละรายการโดยใช้ฟังก์ชันแมป การแมปชนิดที่มีอยู่ช่วยให้คุณสร้างชนิดใหม่ที่แทนข้อมูลเดิมในรูปแบบที่แตกต่างออกไป หากต้องการสร้าง mapped type ให้เข้าถึงพร็อพเพอร์ตีของชนิดที่มีอยู่ด้วยตัวดำเนินการ keyof แล้วปรับเปลี่ยนเพื่อสร้างชนิดใหม่ ในตัวอย่างต่อไปนี้:

type MyMappedType<T> = {
[P in keyof T]: T[P][];
};
type MyType = {
foo: string;
bar: number;
};
type MyNewType = MyMappedType<MyType>;
const x: MyNewType = {
foo: ['hello', 'world'],
bar: [1, 2, 3],
};

เรากำหนด MyMappedType ให้แมปพร็อพเพอร์ตีของ T เพื่อสร้างชนิดใหม่ที่แต่ละพร็อพเพอร์ตีเป็นอาร์เรย์ของชนิดเดิม จากนั้นใช้สิ่งนี้สร้าง MyNewType เพื่อแทนข้อมูลเดียวกับ MyType แต่แต่ละพร็อพเพอร์ตีเป็นอาร์เรย์