타입스크립트가 배열의 타입을 추론할 때 요소의 타입이 string 또는 number이므로 (string | number)[]로 추론했습니다. 이때 소괄호가 꼭 필요합니다. 소괄호를 쓰지 않아 string | number[]가 되면 문자열 또는 ‘숫자의 배열’이 되어버립니다. 이는 ‘문자열 또는 숫자’의 배열과 완전히 다른 결과입니다.
함수의 매개변수나 반환값에서도 쓰입니다.
function returnNumber(value: string | number): number {
return parseInt(value);
// Argument of type 'string | number' is not assignable to parameter of type 'string'. Type 'number' is not assignable to type 'string'.
}
returnNumber(1);
returnNumber('1');
returnNumber 함수의 매개변수 타입이 string | number입니다. value 매개변수가 문자열이 될 수도, 숫자가 될 수도 있다는 뜻입니다. 따라서 returnNumber(1)도 가능하고, returnNumber('1')도 가능합니다. 희한한 점은 parseInt(value)에서 에러가 발생한다는 것입니다. string | number 타입인 인수는 string 타입 매개변수로 넣을 수 없다고 메시지가 나옵니다.