본문 바로가기
TIL

타입스크립트 - infer

by 은지:) 2024. 8. 18.
728x90
반응형

 

타입스크립트가 추론한 타입을 사용할 때 컨디셔널 타입과 함께 사용함

 

 

Q : 그럼 이미 추론한 걸 그대로 두지 왜 infer로 끄집어내서 사용하려고 할까?

 

A : 복잡한 기능에선 쓰일 데가 있음

 

 

  • 복잡한 타입 추론:
    • TypeScript가 자동으로 추론하지 못하는 복잡한 상황에서 infer를 사용하여 원하는 부분만 추출하거나 변형할 수 있습니다.
    • 예를 들어, 특정 함수의 반환 타입을 추출하거나, 제네릭 타입 내의 특정 부분만 추출할 때 유용합니다.
  • 유틸리티 타입 작성:
    • TypeScript에는 ReturnType이나 Parameters와 같은 유틸리티 타입이 있습니다. 이러한 유틸리티 타입은 infer를 사용하여 다양한 타입 정보를 추출합니다. 유틸리티 타입을 직접 정의하거나, 기존 유틸리티 타입을 변형할 때 infer가 유용하게 사용됩니다.
  • 타입 안전성 강화:
    • 복잡한 타입 조작을 할 때, infer를 사용하면 타입 안전성을 유지하면서도 동적인 타입 추론이 가능합니다.
    • 특히 라이브러리나 프레임워크에서 타입을 보다 정교하게 조작해야 하는 경우, infer를 사용해 추론된 타입을 명확하게 관리할 수 있습니다.
  • 조건부 타입과 결합:
    • infer는 조건부 타입과 결합하여, 특정 조건에 따라 타입을 추론하고 그 결과를 타입 시스템 내에서 활용할 수 있습니다.

 

 

 

 

유틸리티 타입 - infer 예제 케이스

type MyReturnType<T> = T extends (...args: number[]) => infer R ? R : never;

function exampleFunction(props: number) {
    return props ? { name: "Alice", age: 30 } : {};
}

// exampleFunction의 반환 타입을 추출
type Result = MyReturnType<typeof exampleFunction>;

let a: Result = {};

console.log(a);

 

함수의 반환 타입을 추출해서 쓰는 거임

 

 

728x90
반응형

'TIL' 카테고리의 다른 글

react - Suspense 이해 정리  (0) 2024.08.19
타입스크립트 - enum  (0) 2024.08.18
타입스크립트 - class  (0) 2024.08.18
타입스크립트 공변성, 반공변성  (0) 2024.08.11
타입스크립트 오버로딩  (0) 2024.08.11

댓글