
값
기본자료형(Primitive)인 여섯가지 데이터 타입
Boolean : true or false
Null : 값이 없다.
Undefined : 값이 정의 되어 있지 않다. 자바스크립트에만 있는 특별한 데이터 타입
Number (en-US) : 숫자. 자바스크립트는 정수, 소수점이 있는 실수를 동일하게 취급
String : 문자열
Symbol (ECMAScript 6 에 추가됨)
별도로 Object 도 있음
자바스크립트는 배열, 함수 객체 모두 값으로 취급한다. 즉 거의 모든 부분을 값으로 취급한다고 보면된다.
언어레벨에서 값으로 취급하는 것은 무엇이든 변수에 넣을 수 있다.
값은 배울게 방대하기 때문에 꾸준히 더 공부가 필요하다. 아래는 Type script에 있는 추가적인 기본 자료형인데 아직 제대로 배우지 않아 적어 놓기만 하였다. 나중에 추가로 더 공부할예정이다.
tuple : 배열의 유형을
enum : 배열이랑 비슷
any : 아무타입 다 쓸 수 있음
void : 함수 리턴값이 없을 때 사용
naver : 절대 발생이없는 타입
타입
자바스크립트는 데이터를 변수의 넣을 때 변수의 타입을 데이터가 들어가는 시점(입력시점)에 자유롭게 바꾼다. 아래 코드를 보면 addAge에에 문자 '30'을 넣고 콘솔을 찍어주면 301이라는 값이 나온다. addAge는 +1이라는 숫자와 결합했지만 문자 + 숫자는 문자로 인식해서 +1값을 문자로 보아 301로 나온것이다. 그리고 아래 age = 10이라고 선언하면 number 타입, false로 선언하면 boolean 타입, {}로 선언하면 객체 타입으로 데이터를 선언 할때마다 그 타입에 맞게 변하는 느슨한 타입관리이다.
function addAge(age){ return age + 1; } let age = addAge('30'); console.log(age); age = 10; age = false; age = {};이러한 느슨한 타입관리는 편리함도 있지만 굉장히 불안전한 개발 환경인 것이다. addAge는 원래 숫자를 계산하기위한 함수인데 문자열을 잘못넣었는데도 동작 한것이니까. 그래서 방어코드를 작성해야하며 아닐경우에도 어떻게 프로그램을 처리할 것인가에 대한 생각도 끊임없이 해야한다.
function addAge(age){ if(typeofage === 'number'){ return age + 1; } else { throw 'ERROR!!' }
위에 언급한 자바스크립트의 타입의 대한 느슨한 관리, 그로인한 불안정성을 타입스크립트가 온전하게 해결해준다. 그 이유는
자바스크립트의 타입 불안정성에 의한 상황은 [런타임 : 사용자가 어플리케이션을 사용하고 있는 상황]에서 일어난다.
타입스크립트는 [컨파일 타임: 개발자가 개발하는 순간]에 일어나 오류를 잡아내 준다.
즉, 개발하는순간 코드의 타입안정성을 잡아주는 것이 타입스크립트를 사용하는 이유이자 가장 중요한 가치다.