PixelStudio
2021. 6. 17. 21:27
TypeScript의 함수는 JavaScript와 마찬가지로 기명 함수(named funcion)과 익명 함수(anonymous function)로 만들 수 있다.
또한 함수는 외부의 변수를 참조할 수 있다.
기존 자바스크립트의 함수
// 기명 함수
function add(x, y) {
return x + y;
}
//익명 함수
let z = 10;
let addF = (x,y) => x + y + z;
위 에제에서 addF라는 익명 함수는 외부의 변수를 참조 하는데, 이를 보고 변수를 캡쳐(capture)한다 라고 한다. 그리고 JavaScript의 함수에 타입을 추가하여 TypeScript에서의 함수로 사용할수 있다. 이것을 함수 타입(Function Type)이라고한다.
// 기명 함수
function add(x:number, y:number):number {
return x:number + y:number;
}
//익명 함수
let z:number = 10;
let addF = (x:number, y:number):number => x + y + z;
함수의 전체 타입 작성
함수의 타입은 매개변수(parameter)의 타입과 반환 타입이 있으며, 전체 함수 타입을 작성하기 위해선 두가지 모두 타입이 필요하다.
let addF: (baseValue: number, increment: number) => number = function (
x: number,
y: number
): number {
return x + y;
};
매개변수의 타입들이 올바르게 나열이 되있으면, 함수 타입에 이름을 붙여도 유효한 타입으로 간주한다.
반환 타입은 위의 예시처럼 화살표 (' => ') 표기를 써서 반환 타입을 명확히 보여줄 수 있다. 함수 표기에 필요한 부분으로 반환 값이 없다면 void를 써서 표시한다.
let addF: (baseValue: number, increment: number) => number = function (
x: number,
y: number
): number {
return x + y;
};
REST 문법이 적용된 매개변수
function sum(a: number, ...nums: number[]): number {
const totalOfNums = 0;
for (let key in nums) {
totalOfNums += nums[key]
}
return a + totalOfNums;
}
THIS
TypeScript에서도 사용이 가능하며, JavaScript의 this가 잘못 사용되었을 때 감지할 수 있다. this가 가리키는 것을 명시하려면 아래 예제와 같은 문법을 사용한다.
function funcName(this: type) {
....
}