반응형
call, apply, bind
함수를 괄호 ()로 호출하는 방법도 있지만, JavaScript에선 두 가지 방법을 추가로 제공합니다.
function add(a: number, b: number): number {
return a + b
}
add(10, 20) // 30으로 평가
add.apply(null, [10, 20]) // 30으로 평가
add.call(null, 10, 20) // 30으로 평가
add.bind(null, 10, 20)() // 30으로 평가
apply는 함수 안에서 값을 this로 한정하며 두 번째 인수를 펼쳐서 함수에 매개변수로 전달합니다.
call도 같은 기능을 수행하지만, 인수를 펼쳐서 전달하지 않고, 순서대로 전달한다는 점이 다릅니다.
비슷한 방식으로 bind도 this 인수를 함수의 인수 목록으로 한정합니다. 다른 점은 bind는 함수를 호출하지 않고, 새로운 함수를 반환하는데, 개발자는 ()나 .call을 이용해 반환된 함수를 호출하거나 .apply로 아직 한정하지 않은 매개변수를 추가로 전달할 수 있습니다.
TSC 플래그: strictBindCallApply
코드 상에서 .call, .apply, .bind를 안전하게 사용하려면 tsconfig.json에서 strictBindCallApply를 활성화해야 합니다.
strict 모드를 이미 활성화했다면 이 옵션은 자동으로 활성화됩니다.
반응형
'👶 TypeScript' 카테고리의 다른 글
TypeScript 실행 (0) | 2023.01.11 |
---|---|
this의 타입 (0) | 2023.01.11 |
나머지 매개변수 (0) | 2023.01.10 |
선택적 매개변수와 기본 매개변수 (0) | 2023.01.10 |
함수 선언과 호출 (0) | 2023.01.10 |