타입스크립트

아이템 20- 다른 타입에는 다른 변수 사용하기

rosaleee 2023. 3. 14. 15:35

타입스크립트에서는 변수에 값을 재할당할 때, 변수를 초기화할 때 지정한 타입과 다른 타입의 값을 할당하면 오류가 발생합니다.

function fetchProduct(id: string) { /* ... */ }
function fetchProductBySerialNumber(id: number) { /* ... */ }

let id = "12-34-56";
fetchProduct(id);

id = 123456; // '123456' is not assignable to type 'string'.
fetchProductBySerialNumber(id);
                        // ~~ Argument of type 'string' is not assignable to
                        //    parameter of type 'number'

위의 오류를 해결하기 위해 id 의 타입을 string | number 와 같은 유니온 타입으로 변경할 수 있지만, 이러한 타입은 간단한 string 이나 number 타입에 비해 다루기가 더 어렵습니다.

이럴 때는 별도의 변수를 도입하는 것이 더 바람직합니다.

function fetchProduct(id: string) { /* ... */ }
function fetchProductBySerialNumber(id: number) { /* ... */ }

const id = "12-34-56";
fetchProduct(id);

const serial = 123456; // OK
fetchProductBySerialNumber(serial); // OK

이렇게 별도의 변수를 도입하면 다음과 같은 장점을 가질 수 있습니다.

  • 서로 관려이 없는 두 개의 값을 분리합니다. ( idserial )
  • 변수명을 더 구체적으로 지을 수 있습니다.
  • 타입 추론을 향상시키며, 타입 구문이 불필요해집니다.
  • 타입이 좀 더 간결해집니다. ( string | number 대신 stringnumber 사용 )
  • let 대신 const 로 변수를 선언하게 되어 코드가 간결해지고, 타입 체커가 타입을 추론하기에도 좋습니다.

따라서 타입이 다른 값을 다룰 때는 변수를 재사용하지 않고 별도의 변수명을 사용하는 것이 좋습니다.