Primitive Type
- 오브젝트와 레퍼런스 형태가 아닌 실제 값을 저장하는 자료형
- 리터럴 값으로 프리미티브 타입의 서브 타입을 나타낼 수 있다.
true값은 Boolean 중 참의 값을 가진 boolean의 서브타입이고 3.14라는 숫자는 전체 number타입의 서브 타입이 된다.
- 래퍼 객체로도 만들 수 있다.
new Boolean(true); // typeof new Boolean(true) : 'object'
new String('hello'); // typeof new String('hello') : 'object'
new Number(12); // typeof new Number(12) : 'object'
boolean
- 기본적인 데이터 타입
- 단순한 true, false
- boolean은 프리미티브 타입의 불린, Boolean은 레퍼 오브젝트의 생성자 class이다. JS에서는 차이가 크게 없지만, TS에서는 차이가 있다. 되도록 소문자를 권장한다.
number
- 숫자를 나타내는 기본적인 타입
- js와 같이 모든 숫자는 부동 소수점 값이다.
- 2진수 및 8진수를 지원한다.
- 1_000_000 표기 가능
string
- 텍스트 형식을 탐조하기 위해 string형식을 사용한다.
- 문자열 데이터를 둘러싸기 위해 따옴표를 사용한다.
- Template String
- 행에 결쳐 있거나, 표현식을 넣을 수 있는 문자열
- backtic(``)기호에 둘러싸여 있다.
- `${}` 로 사용
let age: number = 20;
let example: string = `I'm ${age} ears old`
Symbol
- new Symbol로 사용 불가.
- Symbol 함수로 사용해서 symbol타입을 생성.
console.log(Symbol('a') === Symbol('a'));
// false
const sym = Symbol();
const obj = {
[sym]: "value",
};
obj["sym"]; //접근 불가
obj[sym]; //접근 가능
- 프리미티브 타입의 값을 담아서 사용.
- 고유하고 수정불가능한 값으로 만들어 준다.
- 접근 제어용으로 사용.
Undefined & Null
- 소문자로만 존재한다.
- 실제로 각각 undefined, null 타입을 가진다.
- 따로 설정하지 않으면 다른 모든 타입의 하위 타입으로 존재한다.
- 컴파일 옵션에서 --strickNullChecks 옵션을 사용하면 null, undefined는 void나 자기 자신에게만 할당이 가능하다.
- number에 null이나 undefined를 할당하려면 union type을 사용해야 한다.
let YourName: string = null; //error가 뜨면 strickNullChecks옵션이 적용되어 있다는 것.
let uni: string | null = null; //union type
uni = "Hello";
NULL
- null이라는 값으로 할당된 것
- 사용할 준비가 덜 된 상태.
- null 값만 가질 수 있음.
- typeof => object
undefined
- 값을 할당하지 않은 변수
- 준비가 안된 상태.
- 객체에서 property가 없을 때.
- typeof => undefined
object
// object literal
const man = {name: 'jone', age: 45};
// "{name: string, age: number}" type.
const woman = Object.create({name: 'sara', age: 40});
//Object.create(40); X
let obj: object = {};
obj = {name: 'main'};
obj = true //error
obj = null //error
- primitive type이 아닌 것 을 나타냄.
- non-primitive type : NOT number, string, boolean, bigint, symbol, null, undefined.
'프론트개발 > TypeScript' 카테고리의 다른 글
[TypeScript] 인터페이스(Interface) (0) | 2022.07.19 |
---|---|
[TypeScript] 타입 호환성과 별칭 (0) | 2022.07.18 |
[TypeScript] 타입 시스템 (0) | 2022.07.18 |
[TypeScript] 타입 스크립트의 타입(2) (0) | 2022.07.16 |
[TS vs JS] 타입스크립트와 자바스크립트 (0) | 2022.07.15 |
댓글