• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

제네릭 extends 함수로 한 경우

23.06.23 13:00 작성 23.06.23 13:00 수정 조회수 190

0

function test<T extends (a: number, b: string) => boolean>(callback: T): void {
  return;
}

const callback = (a: number) => {return true};
const callback2 = (a: string) => {return true};
const callback3 = () => {return true};

test(callback); // OK
test(callback2); // ERROR
test(callback3); // OK

playground에서 위 코드 입력시 callback2에서만 오류가 나고 나머진 통과됩니다.

제네릭에선 a, b 옵셔널이 아닌 두 매개변수를 정했는데 왜 빈값 혹은 1개만 넣어도 충족되는지 궁금합니다.

답변 1

답변을 작성해보세요.

1

콜백 함수인 경우는 기본적으로 매개변수 생략 가능합니다. 자바스크립트 생각해보시면

addEventListener('click', () => {})

addEventListener('click', (e) => {})

둘 다 되는 것처럼요.