Skip to content

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
};
}