더북(TheBook)
[1, 2, 3].myForEach(() => {});

interface Array<T> {
  myForEach(callback: () => void): void;
}

에러가 사라졌습니다. 그러면 제대로 타이핑한 것일까요? 아닙니다. 다양한 테스트 사례를 만들어서 에러가 발생하는지 확인해야 합니다.

[1, 2, 3].myForEach(() => {});
[1, 2, 3].myForEach((v, i, a) => { console.log(v, i, a) });
// Argument of type '(v: any, i: any, a: any) => void' is not assignable to parameter of type '() => void'.
[1, 2, 3].myForEach((v, i) => console.log(v));
// Argument of type '(v: any, i: any) => void' is not assignable to parameter of type '() => void'.
[1, 2, 3].myForEach((v) => 3);
// Parameter 'v' implicitly has an 'any' type.
// Type 'number' is not assignable to type 'void'.

interface Array<T> {
  myForEach(callback: () => void): void;
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.