함수(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를 사용하여 똑같이 타입설정을 하면된다.
하지만 객체내 메소드들의 타입을 지정 시, 속성: 화살표 함수
형식으로 타입을 지정하면 된다.