조건부 타입
조건부 타입이 뭐고 왜 굳이 쓰는 걸까?
다음 예시를 보자.
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 |