Skip to main content

함수(function)와 메소드(methods)의 type alias

function type alias

  • 코드를 더 읽기 쉽게 만들기 위해 사용
  • 반복적으로 사용되는 복잡한 함수 타입을 간단하게 정의
  • 함수의 타입은 화살표 함수로 정의, 함수의 타입을 사용시 이항 함수를 사용
// type 함수명 = (parameter: 파라미터 타입 ...) => return 타입;
type Func = (x: number, y: string) => number | string;

const input: Func = (x, y) => x.toString() + y;
caution

함수 type alias를 사용시, 화살표 함수를 사용
type을 이용하여 함수 일반 표현식을 구현할 수 없다.

함수 일반 표현식을 이용하여 정의해야할 경우 2가지 방법이 있다.

  • 함수 일반 표현식을 생성할 때마다 타입을 지정
function Func(x: number, y: string): number | string {
return x.toString() + y;
}
  • type이 아닌 interface를 이용해야한다.
interface Func {
(x: number, y: string): number | string;
}

const input: Func = (x, y) => x.toString() + y;
  • type: 확장이나 유니온(|) 등을 사용하여 더 유연한 타입을 정의할 때 사용
  • interface: 객체나 클래스와 관련된 타입을 정의할 때 사용

함수 타입을 정의할 때 어느 것을 사용해도 상관이 없다.

methods type alias

  • 메소드(method)는 객체에 속하는 함수를 가리키는 용어
  • 객체의 프로퍼티로 함수를 할당했을 때, 해당 함수를 메소드로 간주
  • 객체내의 함수에 대한 타입을 정의
type O = {
name?: string;
age: number;
greeting: () => void;
shout: (x: string) => string;
};

let obj: O = {
name: "JJamVa",
age: 27,
greeting: () => {
console.log("안녕하세요");
},
shout: (x) => {
return x + "Hello!!";
},
};

obj.greeting(); // 안녕하세요!
console.log(obj.shout("짬바")); // 짬바Hello!
note

기존 객체의 type alias를 사용하여 똑같이 타입설정을 하면된다.
하지만 객체내 메소드들의 타입을 지정 시, 속성: 화살표 함수형식으로 타입을 지정하면 된다.