Typescript 란?
- 자바스크립트 슈퍼셋 => 결국 자바스크립트 기반!
Core Types
- number(정수형과 실수형 등 구분은 X)
- String
- Boolean
- Object
- Array
- Tuple : 길이가 2로 고정된 배열
- Enum
- Any : 모든타입가능, 가능한 사용 x
리터럴 타입
- 정확한 값을 가짐
- string과 number 두 가지
1. 문자열 리터럴 타입
type Color = "red" | "orange" | "color";
const color1 : Color = "red";
const color2 : Color = "green";
2. 숫자형 리터럴 타입
type Grade = 1 | 2 | 3;
const stu1 : Grade = 1;
const stu2 : Grade = 4;
Unknown vs Any
Any
- 어떤 타입이든지 허용하는 타입
- 타입을 엄격하게 검사하고 처리하는 타입스크립트에서 any는 치명적
Unknown
- any와 마찬가지로 모든 값을 허용하지만, 할당된 값이 어떤 타입인지 모르기 때문에 함부로 프로퍼티나 연산을 할 수 없다.
- any처럼 어떤 타입의 value든 할당할 수 있지만 실제 사용할 때는 개발자로 하여금 타입을 체킹하도록 만들 수 있는 타입이 필요해 만들게 됐다
Never vs Void
void
- 보통 함수에서 반환 값이 없을 때 반환 타입을 표현하기 위해 사용
- 생략하는 경우가 많다
- undefined 리턴, undefined도 값이다
function returnNothing() : void{
return;
}
never
- 모든 타입에 할당 가능한 하위 타입이나, never타입에는 본인 외에 다른 타입이 할당될 수 없다
- 가장 흔하게 에러 발생시 사용된다
- 정말 아무것도 리턴X
function generateError(msg : string , code :number) : never{
throw {msg : msg, errorCode : code};
}