데이터타입의 존재 이유
1. 저장할 메모리공간의 크기를 지정하기 위해서
2. 참조할 때 한번에 읽을 메모리공간의 크기를 지정하기 위해서
3. 메모리에서 읽는 2진수를 해석할 방법을 알기 위해서 ( 65와 "A"의 차이 )
number
, string
, boolean
, undefined
, null
, symbol
타입이 존재
Infinity
, -Infinity
, NaN
이 존재undefined
타입: 자바스크립트엔진에 의해 초기화되는 값null
타입: 개발자가 의도적으로 초기화한 값symbol
타입: 다른 값과 중복되지 않는 유일한 값object
, array
, function
이 존재
정적타입언어
는 변수를 선언할 때 변수에 할당될 값을 타입을 미리 정의해야 한다. ( 명시적선언 )동적타입언어
는 변수를 선언할 때 타입을 선언하지않는다.동적타이핑
은 재할당에 의해 변수의 타입이 언제든지 동적을 변할 수 있음을 의미동적타입언어는 변수가 타입을 가지는 것이 아닌, 변수에 할당된 값이 타입을 가진다.
// 변수인 x가 정수타입을 가지는 것이 아닌, 변수에 할당된 값인 10이 정수타입을 가지는 것임
let x = 10;
// 동적타이핑
x = "string";
JavaScript같은 동적타입언어는 변수에 어떤 자료형도 들어갈 수 있어서 자료형에 대해 굳이 신경쓰지 않아도 된다는 장점이 있지만, 다른 관점에서 바라보면 자료형이 확실하지 않아서 무슨 값이 변수에 들어가 있을지 판단할 수 없게 됨을 의미한다.
초반에 공부할 때는 자료형에 신경쓰지 않는게 더 편하겠지만 더 깊게 공부하고 좋은 코드를 작성하려 할수록 확실하지 않은 변수를 사용하는게 불편해진다고 생각한다. 아직 공부해보진 않았지만 이게 TypeScript를 사용하는 이유가 아닐까 생각한다.