[typescript] 다중 타입을 활용하여 리턴 타입을 제한하는 방법은 어떤게 있나요?

먼저, 유니언 타입을 사용하여 여러 타입 중 하나의 타입으로만 리턴되도록 제한할 수 있습니다. 예를 들어, 아래와 같이 유니언 타입을 사용하여 number 또는 string 타입만을 리턴할 수 있도록 할 수 있습니다.

function getNumberOrString(isNumber: boolean): number | string {
    if (isNumber) {
        return 10;
    } else {
        return "hello";
    }
}

또 다른 방법으로는 제네릭 타입을 사용하여 리턴 타입을 동적으로 설정할 수 있습니다. 예를 들어, 아래와 같이 제네릭 타입을 사용하여 인자로 전달된 타입과 동일한 타입을 리턴하도록 할 수 있습니다.

function identity<T>(arg: T): T {
    return arg;
}

let result1 = identity(10);      // result1의 타입은 number
let result2 = identity("hello");  // result2의 타입은 string

유니언 타입과 제네릭 타입은 각각 다양한 상황에서 리턴 타입을 제한하는 데 유용하게 활용될 수 있습니다.