테스트 사례를 추가하니 역시나 에러가 발생합니다. forEach 메서드의 콜백 함수는 매개변수가 3개이며 순서대로 요소 값, 인덱스, 원본 배열입니다. 매개변수를 타이핑해봅시다.
[1, 2, 3].myForEach(() => {});
[1, 2, 3].myForEach((v, i, a) => { console.log(v, i, a) });
[1, 2, 3].myForEach((v, i) => console.log(v));
[1, 2, 3].myForEach((v) => 3);
interface Array<T> {
myForEach(callback: (v: number, i: number, a: number[]) => void): void;
}
매개변수를 타이핑하니 에러가 전부 해결되었습니다. 이제는 완벽하게 타이핑한 것일까요? 아직 아닙니다. 더 다양한 테스트 사례를 생각해보아야 합니다. 배열을 다르게 해봅시다.
참고로 새로운 테스트 사례를 추가할 때 기존 테스트 사례를 지우면 안 됩니다. 타이핑을 수정하면 기존에 정상이라 확인했던 테스트 사례에서 다시 에러가 발생할 수도 있으므로, 기존 테스트 사례를 남겨둔 채 새로운 테스트 사례를 추가합니다.