[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);
['1', '2', '3'].myForEach((v) => {
console.log(v.slice(0));
});
// Property 'slice' does not exist on type 'number'.
[true, 2, '3'].myForEach((v) => {
if (typeof v === 'string') {
v.slice(0);
} else {
v.toFixed();
}
});
// Property 'slice' does not exist on type 'never'.
interface Array<T> {
myForEach(callback: (v: number, i: number, a: number[]) => void): void;
}
다시 에러가 발생합니다. 반대로 테스트 사례 중 v.toFixed()에서는 에러가 발생해야 하는데 발생하지 않습니다. 에러가 발생하는 상황만이 문제가 아닙니다. 에러가 발생해야 하는데 발생하지 않는 상황도 문제입니다.