TypeScript 다양한 데이터 타입들

원도훈·2024년 12월 5일
2

타입스크립트(TypeScript)는 자바스크립트의 슈퍼셋으로, 코드의 안정성과 유지보수성을 높이기 위해 다양한 타입을 제공합니다. 이번 글에서는 타입스크립트의 배열, 객체, 함수, 유니언, 인터페이스, 튜플, 그리고 열거형 타입을 알아보겠습니다.

1. 배열 타입 (Array Type)

배열은 여러 요소를 한 곳에 저장할 수 있는 자료 구조입니다. 타입스크립트에서 배열의 요소 타입을 정의할 수 있어, 배열 내의 데이터 타입이 일관되도록 보장할 수 있습니다.

const bookTitles: string[] = [
  "The Great Gatsby",
  "1984",
  "To Kill a Mockingbird",
  "The Catcher in the Rye",
  "Moby-Dick"
];

위 코드에서는 bookTitles 배열이 문자열(string) 타입의 요소만을 가질 수 있도록 정의되었습니다.

2. 객체 타입 (Object Type)

객체 타입은 여러 속성을 가진 데이터를 표현하는 데 사용됩니다. 아래는 책을 나타내는 객체 타입을 정의한 예시입니다.

type Book = {
  title: string;
  author: string;
  publicationYear: number;
  isAvailable: boolean;
};

const exampleBook: Book = {
  title: "The Great Gatsby",
  author: "F. Scott Fitzgerald",
  publicationYear: 1925,
  isAvailable: true
};

Book 타입은 제목, 저자, 출판 연도, 가용 여부 등의 속성을 포함하며, 이 정보를 담고 있는 exampleBook 객체를 정의했습니다.

3. 함수 타입 (Function Type)

함수 타입을 정의하면 함수의 매개변수와 반환값의 타입을 명시적으로 지정할 수 있습니다. 예를 들어, 책의 가용성을 업데이트하는 함수 타입을 정의해 보겠습니다.

type UpdateAvailability = (book: Book, newAvailability: boolean) => void;

const updateAvailability: UpdateAvailability = (book, newAvailability) => {
  book.isAvailable = newAvailability;
};

UpdateAvailability 타입은 Book 객체와 새로운 가용성 상태를 받아 책의 가용성 속성을 업데이트하는 함수입니다.

4. 유니언 타입 (Union Type)

유니언 타입은 변수나 매개변수가 여러 타입 중 하나를 가질 수 있도록 할 때 사용됩니다. 책의 상태를 나타내는 유니언 타입을 정의해 보겠습니다.

type BookStatus = "available" | "checked out" | "reserved";

const updateBookStatus = (book: Book, newStatus: BookStatus): void => {
  if (newStatus === "available") {
    book.isAvailable = true;
  } else {
    book.isAvailable = false;
  }
};

BookStatus는 책의 상태를 나타내며, 세 가지 값 중 하나를 가질 수 있습니다. 이 타입을 이용해 책의 상태를 업데이트할 수 있습니다.

5. 인터페이스 (Interface)

인터페이스는 객체의 구조를 정의하는 데 사용됩니다. 아래는 도서관 시스템을 위한 인터페이스를 정의한 예시입니다.

interface Library {
  books: Book[];
  addBook(book: Book): void;
  removeBook(title: string): void;
}

class LibrarySystem implements Library {
  books: Book[] = [];

  addBook(book: Book): void {
    this.books.push(book);
  }

  removeBook(title: string): void {
    this.books = this.books.filter(book => book.title !== title);
  }
}

Library 인터페이스는 도서관이 가져야 할 속성과 메서드를 정의합니다. 이를 구현한 LibrarySystem 클래스에서는 책을 추가하거나 제거하는 기능을 구현하고 있습니다.

6. 튜플 (Tuple)

튜플은 요소의 수와 각각의 타입이 고정된 배열을 의미합니다. 책의 제목과 저자를 담고 있는 튜플을 정의해 보겠습니다.

type BookInfo = [string, string];

const exampleBookInfo: BookInfo = ["The Great Gatsby", "F. Scott Fitzgerald"];

BookInfo는 두 개의 문자열로 구성된 튜플입니다. exampleBookInfo는 책의 제목과 저자를 포함합니다.

7. 열거형 (Enum)

열거형은 관련된 상수들을 그룹화하는 데 사용됩니다. 책의 장르를 나타내는 열거형을 정의해 보겠습니다.

enum Genre {
  Fiction,
  NonFiction,
  Fantasy,
  Biography,
  ScienceFiction,
  Romance
}

type DetailedBook = Book & {
  genre: Genre;
};

const detailedExampleBook: DetailedBook = {
  title: "The Hobbit",
  author: "J.R.R. Tolkien",
  publicationYear: 1937,
  isAvailable: true,
  genre: Genre.Fantasy
};

Genre 열거형은 책의 장르를 정의합니다. DetailedBook 타입은 Book 타입을 확장하여 genre 속성을 추가한 타입입니다.


타입스크립트는 정적 타입을 사용해 코드의 오류를 미리 방지하고, 코드의 가독성과 유지보수성을 높이는 데 도움을 줍니다. 배열, 객체, 함수, 유니언, 인터페이스, 튜플, 열거형 타입을 통해 더욱 안정적이고 명확한 코드를 작성해 보세요. 이를 통해 더욱 신뢰성 있는 애플리케이션을 만들 수 있습니다.

profile
개발

1개의 댓글

comment-user-thumbnail
2024년 12월 5일

Goooooooooooood

답글 달기