Dark mode
Keyof Type Operator
Operator keyof
ใช้เพื่อดึง keys จาก object type เป็น union type
Basic Usage
Object Properties
keyof จะสร้าง union type จาก keys ของ object type
ts
type Person = {
name: string;
age: number;
location: string;
};
type PersonKeys = keyof Person; // "name" | "age" | "location"
Practical Applications
Type-safe Property Access
ใช้ keyof ร่วมกับ generic เพื่อให้การเข้าถึง property เป็น type-safe
ts
function getProperty<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}
Mapped Types
ใช้ keyof ในการสร้าง mapped types ที่แปลง property ของ type เดิม
ts
type OptionsFlags<T> = {
[P in keyof T]: boolean;
};
Generic Constraints
ใช้ keyof เพื่อจำกัด type parameter ให้เป็น key ของ object type อื่น
ts
function mergeObjects<T extends object, U extends object>(obj1: T, obj2: U): T & U {
return { ...obj1, ...obj2 };
}