Call Signature : 해당 코드의 변수나 함수 타입을 알려준다.

타입을 알려주는 것이 중요하다!

// 인터페이스(interface)
// 함수 타입 - 호출 시그니쳐(Call Signature)

// 하나의 함수 타입
// 매개변수의 타입, 함수 타입을 지정해주는 것
// 소괄호를 써서 이것을 작성하는 것을 호출 시그니처 라고 한다.
// 매개변수 갯수와 타입만 일치해도 문제 없다.
// 이름이 달라도 상관 없음

// 타입을 알아서 찾아간다. 호출 시그니처를 통해서
type Add = (a: number, b:number) => number;
const add:Add (a,b) => a+b;

interface GetName {
  (message: string): string; // 소괄호를 작성하는 방법을 시그니처 라고 한다.
}

// 동일한 구조를 통해 재사용을 하기 위함.
// 만약 재사용할 필요 없다면 User interface Getname을 넣어주면 그만이다.

// 매개변수 갯수와 타입만 일치해도 문제 없다.
// 이름이 달라도 상관 없음
interface User2 {
  name: string;
  age: number;
  getName: (param: string) => string;
}

interface User {
  name: string;
  age: number;
  getName: GetName;
}

const heropy: User = {
  name: 'Heropy',
  age: 85,
  getName(message: string) {
    console.log(message);
    return this.name;
  },
};

heropy.getName('Hello');

참조