본문 바로가기
부트캠프교육중/TypeScript

[TS] 제네릭의 타입에 제한을 두는 경우

by 뭉지야 2023. 8. 16.
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