:을 이용하여 자바스크립트 코드에 타입을 정의하는 방식을 타입 표기(Type Annotation) 이라고 한다.
String
타입이 문자열인 경우 아래와 같이 선언
// 변수
const str: string = "hello";
// 함수
function getStr(str: string): string {
return str;
}
console.log(getStr("hi"));
Number
타입이 숫자인 경우 아래와 같이 선언
// 변수
const num: number = 1;
// 함수
function sumNumber(num1: number, num2: number): number {
return num1 + num2;
}
console.log(sumNumber(1,2));
Boolean
진위 값인 경우 아래와 같이 선언
let isUser: boolean = true;
Array
배열일 경우 아래와 같이 선언
const arr: number[] = [1, 2, 3, 4];
// 제네릭
const arr2: Array<number> = [5, 6, 7, 8];
Tuple
튜플은 배열의 길이가 고정 및 요소의 타입이 지정되어 있다. 아래와 같이 선언
let arr: [nuber, string] = [1, "minki"];
arr[1] = 2; // Error
arr[2] = "hello!"; // Error
Enum
다른 언어(C, JAVA) 에서 흔하게 쓰이는 특정 값(상수)들의 집함을 의미 사용
enum OsType {
IOS, // 0
ANDROID // 1
}
if (deviceOsType === OsType.IOS) {
console.log("IOS 입니다.");
}
// 원한다면 인덱스를 사용자가 지정할 수 있다.
enum OsType {
IOS = 3, // 3
ANDROID // 4
}
enum Brand {
nike = "nike",
adidas = "adidas",
newBalance = "new balance"
}
const handleFavoriteBrand = (brand: string) => {
switch(brand) {
case Brand.nike:
console.log("최애 브랜드는 나이키!");
break;
case Brand.adidas:
console.log("최애 브랜드는 아디다스!");
break;
case Brand.newBalance:
console.log("최애 브랜드는 뉴발란스!");
break;
default:
console.log("그게 무슨 브랜드야?")
break;
}
}
Any
모든 타입을 허용하는 타입 (자주 사용하지 않는게 좋음)
let str: any = "hi";
str = 0;
str = false;
Void
반환값이 없는 함수의 반환 타입, return 이 없거나 return이 있더라도 반환하는 값이 없다면 해당 타입을 지정
function printStr(str: string): void {
console.log(str);
}
function returnNothing(): void {
return;
}
Never
반환하지 않는 값
function unknownColor(color: never): never {
throw new Error("에러에러");
}
function getColorName(c: string): string {
switch (c) {
case 'red':
return 'is red'
case 'green':
return 'is green'
default:
return unknownColor(c); // 그 외의 string으 불가능하다.
}
}
'TYPESCRIPT' 카테고리의 다른 글
[Typescript] Generic(제네릭) (0) | 2024.08.01 |
---|---|
[Typescript] Enum(이넘) (0) | 2024.07.16 |
[Typescript] 인터페이스(interface)[2] (0) | 2024.07.12 |
[Typescript] 인터페이스란? (interface)[1] (0) | 2024.07.09 |
[Typescript] 타입스크립트란? (0) | 2024.06.10 |