

/**
* 인터페이스
*/
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);