Web/TypeScript

[TypeScript] 개념 정리 / Primitive type / Object

say! 2022. 10. 5. 11:24
728x90
 

TypeScript는 어떻게 공부해야 하나요? | 요즘IT

지금 현재 개발하는 상황을 보면 TypeScript는 피할 수 없는 하나의 대세가 된 것 같습니다. TypeScript가 나온 이후로 점점 TypeScript로 만들어지고 있는 라이브러리나 코드의 비중은 높아지고 있고 아

yozm.wishket.com

 

🔵타입스크립트 컴파일러 설치 방법 2가지

1) npm 

npm i typescript -g

node_modules/.bin/tsc

tsc source.ts

 

2) Visual Studio plugin 설치

 

🔵 ECMAScript 표준에 따른 기본 자료형 6가지

Boolean

Number

String

Null

Undefined

Symbol (ECMAScript 6에 추가)

 

Array: object 형

Any, Void, Never, Unkown

Enum

Tuple : object 형

 

🔵 Primitive Type

모두 소문자

오브젝트와 레퍼런스 형태가 아닌 실제 값을 저장하는 자료형

래퍼 객체로 만들 수 있음

literal 값으로 primitive type의 서브 타입을 나타낼 수 있음

 

- boolean

 

- number

JavaScript와 같이 모든 숫자는 부동 소수점 값

10진수, 16진수, 2진수, 8진수 지원

NaN

1_000_000 표현 가능

 

- string

JavaScript와 같이 "나 ' 사용

*Template String

행에 걸쳐 있거나 표현식 넣을 수 있는 문자열

$`{ expr }` 백틱 기호 사용

 

- null & undefined

void에 undefined 넣을 수 있음

let union: string | null = null;

 

- symbol

new symbol로 사용 불가능

Symbol을 함수로 사용해서 symbol 타입 만들 수 있음

primitive 타입의 값을 담아서 사용

고유하고 수정불가능한 값으로 만들어줌 > 접근 제어하는데 쓰는 경우 많음

 

🔵 Object

non-primitive type

primitive type이 아닌 것을 나타내고 싶을 때 사용하는 타입

 

- Array

let list: (number | string)[] = [1, 2, "3"];

 

- Tuple

let x: [string, number];
x = ["hello", 12];

 

- any

어떤 타입이어도 상관없음 > 최대한 쓰지 않는게 좋음 > 컴파일 타임에 타입 체크가 정상적으로 이뤄지지 않기 때문

컴파일 옵션 중에 any를 써야하는데 쓰지 않으면 오류 알려주는 noImplicitAny(strict 옵션에 포함) 옵션 있음

객체를 통해 any 전파됨 > 타입 안전성 잃음

 

- unknown

declare const x: unknown;

if (x === true) {
	const aBoolean: boolean = x;
}

any보다 Type-safe한 타입

any와 같이 아무거나 할당가능

타입을 확정해주지 않으면 다른 곳에 할당할 수 없고 사용불가능

runtime error 줄일 수 있음 > 사용 전에 데이터의 일부 유형의 검사를 수행해야 함을 알리는 API에 사용할 수 있을 것 같음

 

- never

일반적으로 return에 사용됨

모든 타입의 subtype (모든 타입에 할당가능)

never에는 아무것도 할당할 수 없음

> 잘못된 타입 넣는 실수 막을 때 사용하기도 함

 

- void

void에 undefined만 유일하게 할당가능

 


any는 사용하지 않는것이 좋다!