카테고리 없음

[TypeScript] - 열거형, 인터페이스, 타입 별칭, 클래스

2023. 5. 31. 15:48
목차
  1. 💡 열거형 (Enum)
  2. 숫자형 열거형
  3. 문자형 열거형
  4. 💡 인터페이스(interface)
  5. 💡 인터페이스와 상속 
  6. 💡 타입 별칭(Type Aliases)
  7. 💡 인터페이스(interface) 와 타입 별칭(Type Aliases)의 차이점
  8. 💡 클래스(Class)

💡 열거형 (Enum)

TypeScript 의 열거형 (Enum)은 특정 값의 집합을 정의할 때 사용한다. JavaScript에서는 기본적으로 열거형을 지원하지 않지만, TypeScript에서는 문자형 열거형과 숫자형 열거형을 지원한다.

 

숫자형 열거형

값은 자동으로 0부터 시작하여 1씩 증가하지만 밑에와 같이 수동으로 값을 지정할 수 있다.

enum Color {
  Red = 1,
  Green = 2,
  Blue = 4,
}

문자형 열거형

문자형 열거형은 열거형의 값을 전부 다 특정 문자 또는 다른 열거형 값으로 초기화해야 한다.

enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right = "RIGHT",
}

let myDirection: Direction = Direction.Up;
console.log(myDirection); // 출력: "UP"

문자형 열거형에는 숫자형 열거형과는 다르게 auto-incrementing이 없다. 대신 디버깅을 할 때 숫자형 열거형의 값은 가끔 불명확하게 나올 때가 있지만 문자형 열거형은 항상 명확한 값이 나와 읽기 편하다.


 

💡 인터페이스(interface)

TypeScript에서 인터페이스는 객체(Object)의 구조를 정의하기 위해 주로 사용되는 예약어이다.

interface User {
	name: string;
	age: number;
}

 

JavaScript를 TypeScript로 포팅 하기 - 인터페이스

interface User {
  name: string;
  age: number;
}

//Student 인터페이스를 작성합니다.
interface Student extends User {
  grade: number;
}

//Student 인터페이스를 받는 kimcoding을 완성합니다.
//kimcoding의 이름은 김코딩이고, 나이는 20세이며, 학년은 1입니다.
const kimcoding: Student = {
  name: 'kimcoding',
  age: 20,
  grade: 1,
};

console.log(kimcoding);

 

💡 인터페이스와 상속 

인터페이스도 JavaScript에서 클래스를 확장할 때와 마찬가지로 extends 라는 키워드를 사용하여 기존에 존재하던 인터페이스를 상속해 확장이 가능하다.

interface Person {
    name: string;
    age: number;
}

interface Developer extends Person {
    language: string;
}

const person: Developer = {
    language: "TypeScript",
    age: 20,
    name: "Anna",
}

기존에 존재하던 인터페이스의 프로퍼티를 다른 인터페이스에 복사하는 것을 가능하게 해 주며, 인터페이스의 재사용성을 높여준다.


💡 타입 별칭(Type Aliases)

타입 별칭은 타입의 새로운 이름을 만드는 것이다. 이는 새로운 이름으로 기존의 타입을 참조하는 것을 의미한다. 

타입 별칭을 이용하여 타입의 새로운 이름을 만들 때 키워드 type 을 사용하여 작성한다. 

type MyString = string;

let str1: string = 'hello!';

// string 타입처럼 사용할 수 있습니다.
let str2: MyString = 'hello world!';

 

JavaScript를 TypeScript로 포팅 하기 - 타입 별칭

//Todo 타입을 정의합니다.
type Todo = {
  id: number;
  title: string;
  isDone: boolean;
};
//Todo 타입을 사용해 객체를 정의합니다.
const show: Todo = {
  id: 0,
  title: 'hi',
  isDone: true,
};

//Todo 타입을 사용한 객체를 출력해봅니다.
function getTodo(todo: Todo): void {
  console.log(todo);
}

getTodo(show);

 

💡 인터페이스(interface) 와 타입 별칭(Type Aliases)의 차이점

  • 인터페이스(interface) 의 경우 extends를 할 수 있지만, 타입 별칭(Type Aliases)은 extends 를 할 수 없다.
  • 인터페이스는 확장할 수 있고, 타입 별칭은 확장할 수 없다.
  • VSCode 작성 시, 내부에 정의된 프로퍼티로 차이점이 있다.

 

인터페이스로 선언한 타입을 확인한 결과 

 

타입 별칭으로 선언한 타입을 확인한 결과 

 


💡 클래스(Class)

TypeScript에서는 클래스의 속성과 메서드에 대한 타입을 명시할 수 있다.

 

class Person {
  name: string;
  age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  greet(): void {
    console.log(`안녕하세요, 제 이름은 ${this.name}이고, ${this.age}살 입니다.`);
  }
}

TypeScript에서 클래스를 정의할 때, constructor를 이용하여 초기화하는 멤버들은 전부 상단에서 정의를 해줘야 한다.

또한 contructor 내 인자로 받을 때도 정확히 타입을 명시해 줘야 한다.

  1. 💡 열거형 (Enum)
  2. 숫자형 열거형
  3. 문자형 열거형
  4. 💡 인터페이스(interface)
  5. 💡 인터페이스와 상속 
  6. 💡 타입 별칭(Type Aliases)
  7. 💡 인터페이스(interface) 와 타입 별칭(Type Aliases)의 차이점
  8. 💡 클래스(Class)
형일
형일
형일
코딩일지
형일
전체
오늘
어제
  • 분류 전체보기 (53)
    • 코드스테이츠 (20)
    • JavaScript (8)
    • React (10)
    • WEB (5)
    • Git (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.
형일
[TypeScript] - 열거형, 인터페이스, 타입 별칭, 클래스
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.