728x90
function lonTextLength<T>(text: T): T {
console.log(text.length);
return text;
}
이렇게만 하면 length부분에서 오류가 발생한다.
여기서 제네릭의 타입에도 제한을 두게 되면 이런식으로
function lonTextLength<T>(text: T[]): T[] {
console.log(text.length);
return text;
}
이렇게 하면 오류가 발생하지 않는다.
lonTextLength<string>(['hi', 'abc']);
<정의된 타입 이용하기>
interface LengthType {
length: number;
}
function lonTextLength2<T extends LengthType>(text: T): T {
text.length;
return text;
}
이렇게 하는건 제네릭은 LengthType의 하위속성이니까 무조건 length가 있다는 의미가 된다.
그래서 length부분에 오류가 발생하지 않는다 !!!
< keyof >
interface ShoppingItem {
name: string;
price: number;
stock: number;
}
function getShoppingItemOption<T extends keyof ShoppingItem>(itemOption: T): T {
return itemOption;
}
shoppingitem에 있는 한가지가 제네릭이된다.
이런식으
getShoppingItemOption('name');
728x90
'부트캠프교육중 > TypeScript' 카테고리의 다른 글
[TS] 타입 추론 (0) | 2023.08.17 |
---|---|
[TS] Promise에서의 제네릭 (0) | 2023.08.17 |
[TS] interface에 제네릭을 선언하는 경우 (0) | 2023.08.16 |
[TS] 제네릭이란 (0) | 2023.08.16 |
[TS] class (0) | 2023.08.15 |