이러한 특징이 생긴 이유는 배열의 forEach 메서드를 생각해보면 쉽게 알 수 있습니다.
[1, 2, 3].forEach((item, index, array) => {
console.log(item, index, array);
});
// (method) Array<number>.forEach(callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any): void
[1, 2, 3].forEach((item, index) => {});
[1, 2, 3].forEach((item) => item);
forEach 메서드의 콜백 함수는 callbackfn 타입입니다. 콜백 함수의 매개변수에 타입을 표기할 필요가 없고, 매개변수도 전부 옵셔널입니다. callbackfn의 반환값 타입이 void라서 반환값이 없어도 되고, 마지막 forEach처럼 있어도 됩니다.