TypeScript Interface 역할

sun·2024년 5월 30일
0

TypeScript

목록 보기
4/4

TypeScript의 interface는 객체의 구조를 정의하는 데 사용되는 문법입니다. 이는 클래스나 객체가 특정한 형태를 따르도록 강제할 수 있어, 코드의 일관성을 유지하고 오류를 줄이는 데 도움이 됩니다. interface를 사용하면 객체의 타입을 명확하게 정의하고, 해당 객체가 가져야 할 프로퍼티와 메서드를 선언할 수 있습니다.

주요 역할
타입 검사: 객체가 특정 구조를 따르는지 확인하여 타입 안전성을 보장합니다.
코드 가독성 향상: 객체의 형태를 명확히 정의하여 코드의 가독성과 유지보수성을 향상시킵니다.
재사용성: 동일한 구조를 따르는 여러 객체에서 인터페이스를 재사용할 수 있습니다.
기본 사용법
인터페이스 정의

interface User {
  name: string;
  age: number;
  email?: string; // 선택적 프로퍼티
}

위 인터페이스는 User라는 이름으로 정의되었으며, name, age, 그리고 선택적인 email 프로퍼티를 갖습니다.

인터페이스 사용

코드 복사
const user1: User = {
  name: "John",
  age: 30,
  email: "john@example.com",
};

const user2: User = {
  name: "Jane",
  age: 25,
};

위 예제에서 user1과 user2 객체는 User 인터페이스를 따르므로, TypeScript는 이들이 User 구조를 만족하는지 확인합니다.

인터페이스의 확장
인터페이스는 상속을 통해 다른 인터페이스를 확장할 수 있습니다.

코드 복사
interface Person {
  name: string;
  age: number;
}

interface Employee extends Person {
  employeeId: number;
}

const employee: Employee = {
  name: "Alice",
  age: 28,
  employeeId: 1234,
};

위 예제에서 Employee 인터페이스는 Person 인터페이스를 확장하므로, Person의 모든 프로퍼티와 employeeId 프로퍼티를 포함합니다.

함수 타입 정의
인터페이스는 함수 타입도 정의할 수 있습니다.

코드 복사
interface Greet {
  (name: string): string;
}

const sayHello: Greet = (name: string) => {
  return `Hello, ${name}`;
};

위 예제에서 Greet 인터페이스는 문자열을 인수로 받아 문자열을 반환하는 함수 타입을 정의합니다.

클래스와 인터페이스
클래스는 인터페이스를 구현할 수 있습니다. 이는 클래스가 인터페이스의 구조를 따르도록 강제합니다.

코드 복사
interface Animal {
  name: string;
  makeSound(): void;
}

class Dog implements Animal {
  name: string;

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

  makeSound() {
    console.log("Woof! Woof!");
  }
}

const myDog = new Dog("Buddy");
myDog.makeSound(); // Woof! Woof!

위 예제에서 Dog 클래스는 Animal 인터페이스를 구현하여 name 프로퍼티와 makeSound 메서드를 정의합니다.

인터페이스의 합침
인터페이스는 동일한 이름으로 여러 번 선언할 수 있으며, TypeScript는 이를 자동으로 병합합니다.

코드 복사
interface Box {
  height: number;
  width: number;
}

interface Box {
  color: string;
}

const myBox: Box = {
  height: 20,
  width: 10,
  color: "red",
};

위 예제에서 Box 인터페이스는 두 번 선언되었지만, TypeScript는 이를 하나의 인터페이스로 병합합니다.

요약
TypeScript의 interface는 객체의 구조를 정의하고 타입 검사를 통해 코드의 안정성과 일관성을 높이는 데 중요한 역할을 합니다. 인터페이스는 객체, 함수, 클래스와 함께 사용되며, 상속, 확장, 병합 등의 기능을 통해 유연하고 재사용 가능한 코드를 작성하는 데 기여합니다.

0개의 댓글