타입 스크립트를 사용해야 하는 이유

기존 자바스크립트에 타입을 명시하기 위해 변수에 형식을 지정

타입스크립트는 자바스크립트와 달리데이터 타입을 추론하는 능력이 있다.

 

타입스크립트 타입 종류

  • 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 등 인공지능에게 질문하고,

원하는 답을 얻기 위해서는 기본적인 개념과 용도를 알고 질문하자

 인터페이스에 대해 제대로 짚고 가기 위해 객체지향에 대해서 설명을 들었으나

부족함이 느껴져서 해당 부분에 대해서 한번 더 복습할 필요가 있다.

+ Recent posts