StudyForYou / ouahhan-typescript-with-react

우아한 타입스크립트 with 리액트 스터디 레포 🧵
4 stars 0 forks source link

#10 [3장_3] 제네릭을 굳이 사용하지 않아도 되는 경우를 예시코드와 함께 설명해주세요! #22

Closed hyeyoonS closed 3 months ago

hyeyoonS commented 3 months ago

❓문제

제네릭을 굳이 사용하지 않아도 되는 경우를 예시코드와 함께 설명해주세요!

🎯답변 요약

🎯답변

1. 제네릭 선언으로 불필요한 코드 증가 #9 문제의 저의 답변에서 아래 예시는 제네릭이 굳이 필요없는 상황입니다. 왜냐하면 높은 확률로 데이터의 타입이 number로 고정되어 있기 때문입니다. 이런 경우에는 제네릭을 사용하여 코드를 복잡하게 만들기 보다 number 타입을 명시적으로 사용하는 것이 좋습니다.

interface CalculatorProps<T> {
  add: (a: T, b: T) => T
}

2. 제네릭으로 any타입 사용하기

drizzle96 commented 3 months ago

#9 문제의 저의 답변에서 아래 예시는 제네릭이 굳이 필요없는 상황입니다. 왜냐하면 높은 확률로 데이터의 타입이 number로 고정되어 있기 때문입니다. 이런 경우에는 제네릭을 사용하여 코드를 복잡하게 만들기 보다 number 타입을 명시적으로 사용하는 것이 좋습니다.

interface CalculatorProps<T> {
  add: (a: T, b: T) => T
}
hyeyoonS commented 3 months ago
  1. 불필요한 코드의 반복

    type Gtype<T> = T;
    type RequirementType = "USE"|"UN_USE"|"NON_SELECT";
    interface Order {
        gerRequirement():Gtype<RequirementType>
    };

    ⇒ 아래 코드로 바꿀 수 있습니다.

    type RequirementType = "USE"|"UN_USE"|"NON_SELECT";
    interface Order {
        gerRequirement():RequirementType;
    };
  2. 제네릭으로 any타입 사용하기

    • any 타입은 모든 타입을 허용하기 때문에 타입을 명시하지 않은 것과 같습니다.
    type ReturnType<T = any> {
        //...
    }