[TypeScript] 개념 정리 / Primitive type / Object
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는 사용하지 않는것이 좋다!