[typescript] 다중 타입을 사용하여 리턴 타입을 조건부로 제한하는 방법을 알려주세요.

다중 조건에 따라 함수의 리턴 타입을 조건부로 제한하는 방법은 타입스크립트에서 유용하게 활용됩니다. 아래 예시를 사용하여 다음과 같이 조건부 타입을 사용하여 리턴 타입을 제한하는 방법을 배워보겠습니다.

우선, 다음과 같은 예시 함수를 고려해 봅시다.

function getResult(status: "success" | "error"): /* output type */ {
  if (status === "success") {
    return { success: true, message: "Operation successful" };
  } else {
    return { success: false, error: "Something went wrong" };
  }
}

이 함수의 리턴 타입은 status 파라미터의 값에 따라 달라집니다. status가 “success”인 경우에는 successmessage 프로퍼티를 포함하는 객체를 반환하고, “error”인 경우에는 successerror 프로퍼티를 포함하는 객체를 반환합니다.

이를 타입스크립트에서 다중 조건에 따라 리턴 타입이 제한되도록 하려면 조건부 타입을 사용할 수 있습니다. 다음과 같이 코드를 작성할 수 있습니다.

function getResult(status: "success" | "error"): 
  status extends "success" ? { success: true, message: string } : { success: false, error: string } {
  if (status === "success") {
    return { success: true, message: "Operation successful" };
  } else {
    return { success: false, error: "Something went wrong" };
  }
}

위 예시에서 getResult 함수의 리턴 타입은 status 파라미터의 값에 따라 { success: true, message: string } 또는 { success: false, error: string }로 제한됩니다.

이러한 방식으로 조건부 타입을 활용하여 다중 조건에 따라 함수의 리턴 타입을 제한할 수 있습니다.

더 자세한 정보는 타입스크립트 공식 문서를 참고하세요.