아이템 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
는 실제로는 서로 아무런 관계가 없다.
요약 & 정리 #
- 변수의 ‘값’은 바뀔 수 있지만 ‘타입’은 보통 바뀌지 않는다.
- 타입이 다른 경우, 변수를 재사용하지 말자.