본문 바로가기
프로그래밍/타입스크립트

타입스크립트 - 인터페이스

by Programmer.Junny 2025. 2. 14.

타입 별칭과 비슷하지만 '확장, 선언 병합, 다중 확장, 구현' 등 다양한 역할을 수행한다.

타입별칭은 객체나 클래스가 아닌 일반적인 타입에 대한 것들에 중복됨을 줄이기 위해 사용한다고 생각하면 되고,

인터페이스는 객체나 클래스 등에서 구조적으로 사용하기 위해 사용한다고 보면 된다.

1. 선언 병합

// 인터페이스 선언 병합 예시
interface User {
  name: string;
}

interface User {
  age: number;
}

// 합쳐진 User 인터페이스는 다음과 동일하게 취급됩니다.
const user: User = {
  name: "Alice",
  age: 30,
};

인터페이스를 동일한 이름으로 선언하지만 동일한 인터페이스로 취급하므로 확장하기가 쉬워진다.

2. 확장 (상속)

interface Animal {
    name: string,
    age: number,
}

interface Dog extends Animal {
    isBark: string,
}

interface Cat extends Animal {
    isScratch: string,
}

interface DogCat extends Dog, Cat {
    
}

extends 키워드로 '확장'을 할 수 있다. 이는 다른 이름의 인터페이스 혹은 클래스에 해당 인터페이스에 대한 추가적인 확장이다. 위의 코드에서는 Dog라는 인터페이스는 Animal의 타입들 까지 정의된다.

 

3. 구현

클래스가 특정 인터페이스나 추상 클래스에서 정의된 계약(Contract)을 반드시 구현하도록 강제할 때 사용된다.

// 인터페이스를 구현하는 클래스 예시
interface Logger {
  log(message: string): void;
}

class ConsoleLogger implements Logger {
  // Logger 인터페이스에 명시된 log 메서드를 구현
  log(message: string): void {
    console.log(`Log: ${message}`);
  }
}

Logger의 log 함수를 반드시 구현해야한다.

추상클래스 구현

// 추상 클래스를 구현하는 예시
abstract class AbstractProcessor {
  abstract process(data: string): void;
}

class DataProcessor extends AbstractProcessor {
  process(data: string): void {
    console.log(`Processing: ${data}`);
  }
}

abstract 키워드로 추상클래스를 선언할 수 있다. 참고로 추상 클래스는 부분 구현이 가능하므로 인터페이스와는 쓰임이 다르다.

최근댓글

최근글

skin by © 2024 ttuttak