TS) infer에 대해서 짧게 알아보자

2ast·2023년 10월 2일
2

infer 키워드는 쉽게 말해서, ts 타입 추론에 의한 값을 사용하겠다는 것을 의미한다. 즉, infer R에서 R은 ts가 추론한 타입을 갖는다.

ReturnType이라는 유틸리티 타입의 정의를 살펴보자

type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;

ReturnType은 제네릭으로 (...args: any) => any 꼴의 함수 타입을 받고 있다. 그리고 반환하는 함수부를 해석해보면 다음과 같다.

"제네릭으로 받은 T가 (...args: any) => infer R 형태를 보이면 R을 반환하고, 그렇지 않으면 any를 반환하라."

여기서 infer R은 ts가 자체적으로 추론한 함수의 return type을 의미한다.

const returnString = () =>{
	return 'hi'
}
// returnString은 () => string으로 추론됨

const returnNumber = () =>{
	return 1
}
// returnNumber는 () => number로 추론됨

위 예시에서 () => string으로 추론되는 returnString을 ReturnType에 넘긴다면 (...args: any) => infer R 형태에 () => string 이 대치되면서 R이 string 타입을 갖게 된다.

type returnType1 = ReturnType<typeof returnString>; //string
type returnType2 = ReturnType<typeof returnNubmer>; //number
profile
React-Native 개발블로그

0개의 댓글