타입스크립트
기본 타입
불리언(Boolean)
참/거짓 값입니다.
숫자(Number)
부동 소수 값입니다.
문자열(String)
다른 언어들처럼, 텍스트 데이터 타입입니다.
배열(Array)
배열 타입은 두 가지 방법으로 쓸 수 있습니다.
- 배열 요소들을 나타내는 타입 뒤에
[]
를 쓰는 방식
let list : number[] = [1,2,3];
- 제네릭 배열 타입을 쓰는 방식
let list : Array<number> = [1,2,3];
튜플(Tuple)
요소의 타입과 개수가 고정된 배열을 표현할 수 있습니다. 요소들의 타입이 모두 같을 필요도 없습니다.
let x: [string, number];
x = ["hello", 10]; //성공
x = [10, "hello"] //실패
열거(Enum)
enum은 값의 집합에 더 나은 이름을 붙여줄 수 있습니다. 멤버들의 번호를 자동으로 매길 수도 있고 수동으로 설정할 수도 있습니다.
enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];
console.log(colorName); // 값이 2인 'Green'이 출력됩니다.
Any
알지 못하는 타입을 표현해야 할 수도 있는데 이러한 경우 타입 검사를 하지 않고, 그 값들이 컴파일 검사를 통과하기를 원하는 경우 any를 사용합니다.
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // 성공, 분명히 부울입니다.
Void
어떤 타입으로도 존재할 수 없음을 나타내기 때문에 any의 반대 타입이라고 볼 수 있습니다. 보통 함수에서 반환 값이 없을 때 반환 타입을 표현하기 위해 쓰입니다. void를 타입 변수에 선언하는 것은 유용하지 않은데, 그 이유로는 그 변수에는 null 또는 undefined만 할당할 수 있기 때문입니다.
function warnUser(): void {
console.log("This is my warning message");
}
Null & Undefined
null과 undefined는 다른 모든 타입의 하위 타입이기 때문에 다른 타입에 할당할 수 있습니다. 하지만 --strictNullChecks를 사용하면 자기 자신과 any에만 할당 가능합니다.
Never
절대 발생할 수 없는 타입을 나타냅니다. 예를 들어 함수 표현식이나 화살표 함수 표현식에서 항상 오류를 발생시키거나 절대 반환하지 않는 반환 타입으로 쓰입니다. 변수 또한 타입 가드에 의해 아무 타입도 얻지 못하게 좁혀지면 never 타입을 얻게 될 수 있습니다.
// never를 반환하는 함수는 함수의 마지막에 도달할 수 없다.
function error(message: string): never {
throw new Error(message);
}
// 반환 타입이 never로 추론된다.
function fail() {
return error("Something failed");
}
// never를 반환하는 함수는 함수의 마지막에 도달할 수 없다.
function infiniteLoop(): never {
while (true) {
}
}
객체(Object)
원시 타입이 아닌 타입을 나타냅니다.
타입 단언(Type assertions)
컴파일러에게 다른 언어의 타입 변환(형 변환)과 유사하지만, 다른 특별한 검사를 하거나 데이터를 재구성하지는 않습니다. 이는 런타임에 영향을 미치지 않으며, 온전히 컴파일러만 이를 사용합니다. 타입 단언에는 2가지 형태가 있습니다.
- angle-bracket 문법
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
- as 문법
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length
'프론트엔드 스터디 > Typescript' 카테고리의 다른 글
[TypeScript] 기초 - 유니온 타입(Union Type) (0) | 2021.07.21 |
---|---|
[TypeScript] 기초 - 리터럴 타입 (0) | 2021.07.20 |
[TypeScript] 기초 - 인터페이스(Interface) (0) | 2021.07.20 |
[TypeScript] 데코레이터 (0) | 2021.07.20 |
[TypeScript] 기초 - 타입스크립트를 왜 써야할까? (0) | 2021.07.05 |