TypeScript Types vs JavaScript Types
-
JavaScript
자바스크립트는 Dynamic Types
dynamic type은 개발할 때는 타입을 알 수가 없고 실제 런타임을 해야만 잘못된 것인지 알 수 있다. -
TypeScript
타입스크립트는 Static Types
static type은 개발하는 중간에 타입을 체크한다.- 타입스크립트는 자바스크립트의 기본 자료형을 포함하여 데이터 타입이 있다.
JavaScript 기본 자료형: boolean, number, string, null, undefined, symbol, array(object형) - 추가로 프로그래밍을 도울 타입이 더 제공된다.
해당 타입들은 타입 스크립트에서 꼭 필요한 타입이며 안정성을 도와주는 역할을 한다.
any, void, never, unknown, enum, tuple(object 형)
- 타입스크립트는 자바스크립트의 기본 자료형을 포함하여 데이터 타입이 있다.
Primitive Types
타입스크립트의 기본 타입중에서 자바스크립트에서 온 타입이다.
-
해당 타입은 object와 reference 형태가 아닌 실제 값을 저장하는 자료형이다.
(즉, object와 reference는 실제 값을 저장하지 않는 것을 의미한다.) - primitive 형의 내장 함수를 사용 가능한 것은 자바스크립트 처리 방식 덕분이다.
let name = 'mark'; name.toString();
-
ES2015기준 primitive type 6개는 boolean, number, string, symbol, null, undefined이다.
- primitive type은 literal 값으로 Primitive 타입의 서브 타입을 나타낼 수 있다.
true; 'hello'; 3.14; null; undefined;
-
래퍼 객체로 만들 수 있다.
boolean을 대문자로 시작하는 Boolean으로 new를 통해 새로 생성해서 object를 만들 수 있다.
따라서, 이것들은 primitive type이 아닌 object이다. 해당 방법으로의 사용은 절대 권장하지 않는다! 타입으로는 사용 Xnew Boolean(false); // typeof new Boolean(false) : 'object' new String('word'); // typeof new String('word') : 'object' new Nember(42); // typeof new Number(42) : 'object'
Boolean
- boolean값
let isDone: boolean = false; isDone = true; console.log(typeof isDone); //'boolean'
- primitive과 wrapper object의 충돌
let isOk: Boolean = true; // Boolean은 primitive type let isNotOk: boolean = new Boolean(true); // primitive boolean에 wrapper Boolean => 충돌
isNotOk는, true값을 가진 Boolean wrapper 객체가 생성이 되면서 primitive 타입인 isNotOk변수에 할당하려고 하지만 불가능하다.
boolean은 primitive이고, Boolean은 new로 인해 wrapper 객체이기 때문에 서로 달라서 충돌이 일어난다.
Number
숫자를 나타내는 가장 기본적인 타입이다.
-
숫자를 다양한 형태로 나타내기
10진수뿐 만 아니라 16진수 8진수 등등 모두 자바스크립트에서도 가능한 것이다. 그렇기에 타입스크립트에서도 가능하다.
let decimal: number = 6; // 10진수 let hex: number = 0xf00d; // 16진수 let binary: number = 0b1010; // 2진수 let octal: number = 0o744; // 8진수 let notANumber: number = NaN; // NaN도 숫자취급 let nuderscoreNum: number = 1_000_000; // 백만
Comments