[typescript] 다중 타입을 사용하여 객체의 메소드 타입을 제한하는 방법을 알려주세요.

객체 메소드 타입 제한하기

만약 특정 객체가 특정한 메소드를 가지고 있어야 하는 경우, 인터페이스(Interface)타입(Type)을 사용하여 해당 메소드의 존재 및 타입을 제한할 수 있습니다.

interface Printable {
  print: () => void;
}

class Message implements Printable {
  print() {
    console.log("This is a printable message");
  }
}

// 다음과 같이 Printable 인터페이스를 준수하지 않는 경우 에러가 발생합니다.
class Book {
  read() {
    console.log("This is a readable book");
  }
}

function printMessage(item: Printable) {
  item.print();
}

const message = new Message();
printMessage(message);

// 다음 코드는 에러를 발생시킵니다
// const book = new Book();
// printMessage(book);

위의 예시에서 Printable 인터페이스는 print 메소드만을 가지고 있는 것으로 정의되어 있습니다. 이 인터페이스를 구현한 Message 클래스는 print 메소드를 가지고 있으므로 printMessage 함수에 전달할 수 있습니다. 반면, Book 클래스는 print 메소드를 가지고 있지 않으므로 printMessage 함수에 전달하면 에러가 발생합니다.

이와 같이 TypeScript를 사용하여 객체의 메소드 타입을 제한함으로써 코드의 안정성을 높일 수 있습니다.

만약 추가적인 질문이 있거나 도움이 필요하시다면 언제든지 물어보세요!