인터페이스 - 인터페이스

Untitled

Untitled

/**
 * 인터페이스
 */

interface Person{
    name : string;
    age? : number; 
    sayHi(): void; // or sayHi : () => void
    sayHi(a: number, b: number): void;
}

// 인터페이스는 type과 다르게 아래와 같은 유니온과 인터섹션 타입을 만들 수 없음
// 만약 Person을 유니온이나 인터섹션에 이용해야 한다면 아래처럼 활용
// type Type1 = number | string | Person;
// type Type2 = number & string & Person;

const person: Person ={
    name: "박정수",
    age: 26,
    sayHi: function() {
        console.log("Hi")
    }
}

// 메서드의 오버로딩을 구현하고 싶으면 인터페이스에 위처럼 호출 시그니쳐 이용
person.sayHi();
person.sayHi(1, 2);