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 ={ };