BEST
개발 · 프로그래밍

/

프로그래밍 언어

[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편

타입스크립트 기본 문법을 배우고, 다른 사람이 작성한 타입을 분석하는 방법과, 내가 직접 타입을 작성하는 방법에 대해 알아봅니다.

(4.9) 수강평 54개

수강생 1,456명

Thumbnail

타입스크립트 5.1 출시 bind 함수 변경점

bind<T>(this: T, thisArg: ThisParameterType<T>): OmitThisParameter<T>;

bind<T, A extends any[], B extends any[], R>(this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R;

 

bind 함수가 간단해졌습니다. [...A, ...B]가 헷갈리실텐데요. A는 기존 함수에 bind할 인수들이고, B는 bind하지 않은 인수들이라고 생각하시면 됩니다. 즉, 원래 함수는 A, B를 모두 매개변수로 갖고 있었다면, 새롭게 bind한 함수에서는 B만 더 필요하게 된 것입니다.

const sum = (a1, a2, b1, b2) => a1 + a2 + b1 + b2;
const sum1 = sum.bind(null, 1, 2); // a1에 1, a2에 2를 bind
sum1(3, 4); // 1 + 2 + 3 + 4 === 3, a1, a2는 이미 bind되었으므로 남은 b1, b2만 제공

기존에는 다음과 같았습니다.

bind<T, A0, A extends any[], R>(this: (this: T, arg0: A0, ...args: A) => R, thisArg: T, arg0: A0): (...args: A) => R;
bind<T, A0, A1, A extends any[], R>(this: (this: T, arg0: A0, arg1: A1, ...args: A) => R, thisArg: T, arg0: A0, arg1: A1): (...args: A) => R;
bind<T, A0, A1, A2, A extends any[], R>(this: (this: T, arg0: A0, arg1: A1, arg2: A2, ...args: A) => R, thisArg: T, arg0: A0, arg1: A1, arg2: A2): (...args: A) => R;
bind<T, A0, A1, A2, A3, A extends any[], R>(this: (this: T, arg0: A0, arg1: A1, arg2: A2, arg3: A3, ...args: A) => R, thisArg: T, arg0: A0, arg1: A1, arg2: A2, arg3: A3): (...args: A) => R;
bind<T, AX, R>(this: (this: T, ...args: AX[]) => R, thisArg: T, ...args: AX[]): (...args: AX[]) => R;

댓글