🤹🏻‍♀️ Javascript/🥎 Typescript

[TS] 조건부 타입

ji-hyun 2022. 5. 7. 19:37

조건부 타입

조건부 타입이 뭐고 왜 굳이 쓰는 걸까?

 

 

다음 예시를 보자.

 

function checkName(idOrName: string | number) {
  return idOrName;
}

checkName(1);
checkName("ji");

 

매개변수로 type 이 string 이나 number 가 들어갈 수 있다고 지정해주었다.

이제 checkName(1) 에 마우스를 올려보았을 때,

 

 

function checkName(idOrName: string | number): string | number

위와 같이 타입이 추론된다.

checkName("ji") 도 마찬가지다.

 

 

 

나는 checkName(1) 이면 number 로, checkName("ji") 이면 string 으로 추론되게 하고 싶다.

이럴 때, 조건부 타입을 쓰게 되는 것이다.

 

 

 

function checkId<T extends string | number>(arg: T): Arg<T>;
function checkId(arg: string | number): string | number {
  if (typeof arg === "number") {
    return arg;
  }
  return arg;
}

const a = checkId(2);
const b = checkId("a");

type Arg<T extends string | number> = T extends number ? number : string;

 

그래서 위와 같이 작성해주게 되면

a 는 number 로 추론이, b 는 string 으로 추론이 된다.

 

 

 

'🤹🏻‍♀️ Javascript > 🥎 Typescript' 카테고리의 다른 글

[TS] 제네릭  (0) 2022.05.07
타입 추론, 타입 단언  (0) 2022.03.06
타입스크립트 에러  (0) 2022.02.25
체크박스 typescript (useState Type)  (0) 2022.02.25
material ui - Pagination  (0) 2022.02.25