[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를 사용하여 객체의 메소드 타입을 제한함으로써 코드의 안정성을 높일 수 있습니다.
만약 추가적인 질문이 있거나 도움이 필요하시다면 언제든지 물어보세요!