타입 스크립트를 사용해야 하는 이유
기존 자바스크립트에 타입을 명시하기 위해 변수에 형식을 지정
타입스크립트는 자바스크립트와 달리데이터 타입을 추론하는 능력이 있다.
타입스크립트 타입 종류
- Primitive types : 기본적으로 쓰이는 타입(Number, String, …)
⇒ 변수 변수명 : 변수타입
- Object types : 객체{} 안에 있는 여러 값에 타입을 지정
{ 이름, 나이 } ⇒ {name:string, age:number}
- Special types : 특정 데이터 타입을 가르키지 않음, 코드의 유연성을 높이거나 특정한 상황일 때 사용(any,unknown ...)
Unknown의 경우에는 뒤에 if조건문을 걸거나 as (별칭)으로 결과를 출력한다.
- Union types : 변수의 타입이 둘 이상인 경우
=> 변수 변수명 : 변수타입1 | 변수타입2
- Literal types : 변수 타입을 특정한 값으로 설정, 타입이 곧 변수 값(정해진 숫자는 리터럴에 해당)
type Fruit = "apple"; // Fruit 타입은 오직 "apple" 값만 가진다.
let myFruit: Fruit = "apple"; // 정상 출력
// let yourFruit: Fruit = "banana"; //"banana"는 Fruit의 타입에 없으므로 에러
=>고유의 값이 있을 때, 값을 따로 부여할 때 ex) 고객번호, 프로세스
변수명 : 타입(변수값) = 변수값
- Enum types : 관련된 특정한 값을 “집합” (상수는 쓸 수 없고, 상수를 문자화, 숫자를 포함하고 있다.)
enum Day {
MONDAY, // 0
TUESDAY, // 1
WEDNESDAY, // 2
THURSDAY, // 3
FRIDAY, // 4
SATURDAY, // 5
SUNDAY // 6
}
let today: Day = Day.MONDAY;
console.log(today); // 0 (기본적으로 숫자가 할당)
=> 조직, 집합에 해당 할 때 ex) 반, 부서
- Interface types : 상속을 의미하며, 객체와 객체를 연결해주는 타입
interface User {
name: string;
age: number;
}
let user1: User = {
name: "김철수",
age: 30
};
// 정상 출력
// 인터페이스의 속성과 객체 내 속성의 타입을 지키지 않으면 에러 발생
let user2: User = {
name: "이영희"
};
// 에러 = age 속성이 없음
let user3: User = {
name: "박지민",
age: "스물다섯"
};
// 에러 = age 타입이 number가 아닌 string
- Generics types : 내가 타입을 임의로 설정하고 지정한다. 보통은 <T>로 설정
function print<T>(value: T): void {
console.log(`출력 결과는 ${value} 입니다.`);
}
print<string>("Hello World"); // Hello World
print<number>(42); // 42
★ 비동기 함수의 타입스크립트
function welcome():string {
return "Hello World";
}
async function welcome(): Promise<string> {
return "Hello World";
}
// async 비동기 경우에는 Promise<타입>이 들어가야한다.
그 외에도 유틸리티 타입, 인덱스 타입, 타입 가드가 있다.
회고 : GPT나 Cursor AI 등 인공지능에게 질문하고,
원하는 답을 얻기 위해서는 기본적인 개념과 용도를 알고 질문하자
인터페이스에 대해 제대로 짚고 가기 위해 객체지향에 대해서 설명을 들었으나
부족함이 느껴져서 해당 부분에 대해서 한번 더 복습할 필요가 있다.
'Deep.FE' 카테고리의 다른 글
| 멋사 부트캠프 프론트엔드 플러스 5기 - Next.js & DB (7일차) (0) | 2025.06.25 |
|---|---|
| 멋사 부트캠프 프론트엔드 플러스 5기 - Next.js (6일차) (0) | 2025.06.24 |
| 멋사 부트캠프 프론트엔드 플러스 5기 - 동기 / 비동기(4일차) (1) | 2025.06.21 |
| 멋사 부트캠프 프론트엔드 플러스 5기 - MVC & Flux (3일차) (0) | 2025.06.19 |
| 멋사 부트캠프 프론트엔드 플러스 5기 - JS Essential (2일차) (0) | 2025.06.18 |