TypeScript Types vs JavaScript Types
TypeScript Types | JavaScript Types |
---|
Static: set during development | Dynamic: resolved at runtime |
-
ECMAScript 표준에 따른 기본 자료형
Boolean
Number
String
Null
Undefined
Symbol
Array: object형
-
프로그래밍을 도울 타입
Any, Void, Never, Unknown
Enum
Tuple: object형
Primitive Types
오브젝트와 레퍼런스 형태가 아닌 실제 값을 저장하는 자료형
Primitive 형의 내장 함수를 사용 가능한 것은 JS 처리 방식 덕분
- literal 값으로 Primitive 타입의 서브 타입을 나타낼 수 있다.
래퍼 객체로 만들 수 있다.
TypeScript의 핵심 Primitive Types은 모두 소문자이다.
boolean
let isDone: boolean = false;
isDone = true;
console.log(typeof isDone)
let isOk: Boolean = true;
let isNotOk: boolean = new Boolean(true);
number
- 모든 숫자는 부동 소수점 값이다.
- TypeScript는 16진수 및 10진수 literal 외에도, 2진수 및 8진수를 지원한다.
- NaN
- 1_000_000과 같은 표기가가능하다.
string
- 텍스트 형식을 참조하기 위해 'String' 형식을 사용한다.
- 문자열 데이터를 둘러싸기 위해 큰 따옴표("")나, 작은 따옴표('')를 사용한다.
- Template String
- 행에 걸쳐 있거나, 표현식을 넣을 수 있는 문자열이다.
- backtick ` 기호에 둘러쌓여 있다.
- 포함된 표현식은 `${expr} 와 같은 형태로 사용한다.
symbol
- Primitive 타입의 값을 담아서 사용한다.
- 고유하고 수정 불가능한 값으로 만들어준다.
- 접근을 제어하는데 주로 사용한다.
(함수로 사용할땐 Symbol, Type으로 사용할땐 symbol)
null & undefined
- null 과 undefined는 실제로 각각 null 과 undefined이라는 타입을 가진다.
- 둘다 소문자만 존재한다.
object
- Primitive 타입이 아닌것을 나타내고 싶을때 사용한다.
array
tuple
- 길이가 정해져있고 앞뒤 타입이 정확한 자료형이다.
any
- 어떤 타입이어도 상관없는 타입니다.
- 계속해서 개체를 통해 전파되므로 필요하지 않은 경우에는 사용하지 않도록 해야한다.
unknown
- any와 짝으로 any 보다 Type-safe한 타입이다.
- runtime error를 줄일수 있다.
never
- 모든 타입의 subtype이며, 모든 타입에 할당 할 수 있다.
- never에는 그 어떤것도 할당할 수 없다.
- 잘못된 타입을 넣는 실수를 막고자 할때 사용한다.
void
- return부분에 달아서 아무것도 하지 않겠다라는것을 명시적으로 표현하고 그것을 막는다.