Primitive type
- 오브젝트와 레퍼런스 형태가 아닌 실제 값을 저장하는 자료형
- 프리미티브 형의 내장 함수를 사용 가능한 것은 JS 처리 방식 덕분
- literal 갑으로 Primitive 타입의 서브 타입으로 표현가능
- 래퍼 객체 형태로 만들 수 있다.
Number / number
- JS 와 같이, TS의 모든 숫자는 부동 소수점 값
- 16진수 및 10진수 리터럴 외에도 2진수 8진수도 사용가능
- NaN
- 1_000_000과 같은 표기 가능
String
- 텍스트 형식을 참조하기 위해 "string" 형식을 사용
- 큰 따옴표("") 또는 작은 따옴표('')를 사용
- Template String
1) 행에 걸쳐 있거나, 표현식을 넣을 수 있는 문자열
2) 이 문자열은 backtick기호를 사용
3) 포함된 표현식은${expr}
와 같은 형식을 사용
Symbol
- new Symbol로 사용할 수 없다.
- Symbol을 함수로 사용해서 symbol 타입을 만들어낼 수 있다.
- 프리미티브 타입의 값을 담아 사용
- 고유하고 수정불가능한 값을 만든다.
- 접근을 제어하는데 사용하는 경우가 많다.
Undefined & Null
- TS에서는 undefined와 null이라는 타입을 가진다.
- void 와 마찬가지로, 그 자체로는 유용하지 않다.
- 둘다 소문자만 존재
- number에 null 또는 undefined를 할당할 수 있다.
- 컴파일 옵션에서 "--strictNullChecks"사용하면 ,
null과 undefined는 자신들에게만 할당
Object
- Primitive Type이 아닌 것을 나타내고 싶을 때 사용
const person1 = { name: "KIM", age: 27 }; const person2 = Object.create({ name: "KJH", age: 27 }); const person3 = Object.create(27); -> 에러발생
Any
- 어느 타입이어도 상관없는 타입
- any는 최대한 사용하지 않는 것이 좋다.
- 컴파일 타입에 타입 체크가 정상적으로 이뤄지지 않기 때문
- 컴파일 옵션중 any를 써야하는데 쓰지 않으면 오류가 출력하는 옵션이 있다.
- any는 계속해서 개체를 통해 전파
- 타입 안전성을 잃는다.
unknown
- any보다 Type-safe한 타입
- unknown 타입을 사용하면 runtime error를 줄일 수 있다.
never
- 모든 타입의 subType이다.
- 모든 타입에 할당 할 수 있다.
- any도 never에게 할당 할 수 없다.
4.잘못된 타입을 넣는 수를 막으려고 할때 사용