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

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

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

결론 = 한 변수(명)를 무분별하게 재사용하지 말자.

자바스크립트에서는 한 변수에 다른 타입을 재사용할 수 있다.

타입스크립트에서는 한 변수에 다른 타입을 재사용할 수 없다. (= 타입 체커에서 걸린다.)

// js : O
// ts : X

let id = "12-34-56";

id = 123456;

" 변수의 ‘값’은 바뀔 수 있지만 ‘타입’은 보통 바뀌지 않는다. “



타입을 바꿀 수 있는 한 가지 방법 : ‘(타입의)범위를 좁히는 것’ #

‘타입을 더 작게 제한하는 것’을 의미한다.

” 이 방법은 어디까지나 예외이지 규칙은 아니다. (= 권장하지 않는다?) “

let id: string|number = "12-34-56";

id = 123456;    // 정상

이는 더 많은 문제점을 야기시킨다.

  • 코드 가독성을 떨어뜨린다.
  • 이 변수를 사용할 때마다 타입을 확인해야한다. (string 타입인지, number 타입인지, …)



별도의 변수를 사용하는 것을 권장한다. #

const id = "12-34-56";

const serial = 123456;

아래와 같은 이점이 있다.

  • 가독성 향상
  • 간결성 향상
  • 타입 추론 향상
  • let 대신 const 사용 OK

” 타입이 바뀌는 변수는 되도록 피해야 하며, 목적이 다른 곳에는 별도의 변수명을 사용해야 한다. “



‘재사용되는 변수’ vs ‘가려지는 변수’ #

(위에서 설명한)‘재사용되는 변수’와 ‘가려지는 변수’를 구분할 수 있어야 한다. (혼동해서는 안된다.)

/** 예시 : 가려지는 변수 */

let id = "12-34-56";
// ...
{
    const id = 123456;   // 정상
    //...
}

여기서 두 id는 실제로는 서로 아무런 관계가 없다.



요약 & 정리 #

  • 변수의 ‘값’은 바뀔 수 있지만 ‘타입’은 보통 바뀌지 않는다.
  • 타입이 다른 경우, 변수를 재사용하지 말자.