[typescript] 제네릭 제약과 타입 제한
제네릭 제약
제네릭을 사용할 때 특정 타입에 대한 제약을 걸고 싶을 때가 있습니다. 이 때 제네릭 제약을 사용합니다. 제네릭 제약은 특정 타입이 가져야 하는 속성이나 행위를 명시하여 보다 유연한 코드를 작성할 수 있도록 도와줍니다.
예를 들어, 다음 코드는 length
속성을 갖는 타입을 제네릭으로 받아와야 합니다.
function logLength<T extends { length: number }>(arg: T): void {
console.log(arg.length);
}
위 코드에서 <T extends { length: number }>
부분은 T
가 length
속성을 가지고 있어야 한다는 제약을 나타냅니다.
타입 제한
keyof
키워드를 사용하여 객체의 특정 속성만을 받아올 수 있는 타입을 지정할 수 있습니다.
예를 들어, 다음 코드는 Person
타입의 객체에서 name
속성만을 받아올 때 사용됩니다.
type Person = {
name: string;
age: number;
}
function getName(obj: keyof Person): void {
console.log(obj.name);
}
위 코드에서 obj: keyof Person
부분은 obj
가 Person
타입의 객체의 속성만을 가지도록 제한합니다.
결론
제네릭 제약과 타입 제한을 사용하면 보다 안정적이고 유연한 코드를 작성할 수 있습니다. 타입 안전성을 높이고 코드의 가독성을 향상시키기 위해 이러한 기능들을 적절히 활용하는 것이 중요합니다.
이 포스트는 TypeScript 공식 문서를 참고하여 작성되었습니다.