
number 타입은 16진수, 10진수, 2진수 등 다양하게 표현이 가능하다.
null는 undefined과 유사하지만, 해당 데이터는 값을 가지지 않음을 명시하는 타입이고, undefined는 데이터를 아직 할당하지
primitive type은 literal 값으로 primitive 타입의 서브타입을 나타낼 수 있다.
예를 들어, true는 boolean의 타입을 나타내는 서브타입이며, 'hellow world'는 string의 타입을 나타내는 서브타입이며, 25.512 는 number라는 타입의 서브타입이다.
new 를 통해 wrapper 객체로 만들 수 있다. new Boolean(false); new String('hi'); new Number(123); 도 가능하지만 이 방법은 객체이기 때문에 object형태로 된다. 따라서 ts는 이 방법을 권장하지 않는다.
null 타입은 런타임에서 typeof 를 통해 알아보면, object로 나온다
NaN 은 not a number의 약자로 숫자가 아님을 나타내는 특별한 타입이며, 이 타입 또한 number 타입이다
중간에 언더바를 통해 숫자를 표현하는 것이 가능하다
let underscoreNum: number = 1_000_000;
null과 undefined는 기본적으로 모든 타입들의 서브타입이다. 하지만 컴파일 옵션에서 --strictNullChecks가 기본적으로 체크되어있기 때문에 null과 undefined는 void나 자기 자신들에게만 할당할 수 있다. 이를 해제하면 number에 null 또는 undefined를 할당할 수 있다는 뜻이다.
ts에서 null과 undefined 값은 실제로 각각 null과 undefined이라는 타입을 가진다. void와 마찬가지로 그 자체로는 그다지 유용하진 않다. 둘다 소문자만 존재하며 이 변수들에 할당할 수 있는 것들은 거의 없다.
const person1 = { name: 'eunsu', age: 36 };
// 위 타입은 'object'가 아닌 { name: string, age: number }
// 이렇게 나오고, 이런 것들을 오브젝트 리터럴 타입이라 한다
object의 property가 없을 때는 undefined로 반환된다. 런타임에서 typeof 연산자를 이용해서 알아내면, undefined이다
Tuple의 순서는 중요하며, 값의 순서와 동일해야 한다. 또한 Tuple은 js의 구조분해할당 문법이 가능하다.
object도 타입으로 지정할 수는 있지만, 잘 사용하지는 않는다. 적용되는 범위가 매우 크기 때문에 ts를 사용하는 의미가 퇴색되기 때문이다.
let obj: object ={ };