[typescript] 인터페이스를 사용하여 객체의 구조를 지정하는 방법

TypeScript는 JavaScript에 정적 타이핑을 추가한 것으로, 객체 및 변수의 타입을 명시적으로 지정할 수 있습니다. 이를 통해 코드의 가독성을 높일 뿐만 아니라 잠재적인 버그를 사전에 방지할 수 있습니다.

인터페이스(Interfaces)는 TypeScript에서 객체의 구조를 정의하고, 해당 객체가 반드시 가지고 있어야 하는 속성과 메소드를 명시할 수 있는 강력한 도구입니다.

인터페이스란 무엇인가요?

인터페이스는 객체의 구조를 정의하기 위한 TypeScript의 기능으로, 다음과 같은 형식으로 선언할 수 있습니다.

interface Person {
  name: string;
  age: number;
  greet: () => void;
}

위의 예제에서 Person이라는 인터페이스는 name이라는 문자열 타입의 속성, age라는 숫자 타입의 속성, 그리고 greet라는 함수 타입의 메소드를 가져야 한다고 정의하고 있습니다.

인터페이스를 사용하는 방법

인터페이스를 사용하여 객체를 선언하거나 클래스의 구조를 지정할 수 있습니다.

1. 객체에 인터페이스 적용

interface Person {
  name: string;
  age: number;
  greet: () => void;
}

let person: Person = {
  name: 'John',
  age: 30,
  greet: function() {
    console.log('Hello!');
  }
};

위의 예제에서 person 객체는 Person 인터페이스를 준수해야 하며, 해당 객체에서는 name, age, greet 속성 및 메소드를 가져야 합니다.

2. 클래스에 인터페이스 적용

interface Animal {
  name: string;
  sound: string;
  makeSound: () => void;
}

class Dog implements Animal {
  name: string;
  sound: string;

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

  makeSound() {
    console.log(this.sound);
  }
}

위의 예제에서 Dog 클래스는 Animal 인터페이스를 구현하여야 합니다. 즉, namesound 속성을 가져야 하며, makeSound 메소드를 구현하여야 합니다.

결론

인터페이스를 사용하여 TypeScript에서 객체의 구조를 명확히 정의할 수 있으며, 이를 통해 코드의 가독성과 유지보수성을 향상시킬 수 있습니다. 객체 및 클래스의 구조를 명시적으로 작성함으로써 개발자들은 잠재적인 오류를 사전에 방지하고, 협업 시에도 객체의 형태와 의도를 명확히 전달할 수 있습니다.

이처럼 인터페이스는 TypeScript에서 객체 지향적인 프로그래밍을 지원하며, 안정적이고 확장 가능한 코드를 작성하는 데 유용한 도구로 활용됩니다.

참고 자료: TypeScript 공식 문서 - 인터페이스