3.7 filter 만들기
이번에는 filter 메서드를 타이핑해보겠습니다. 이미 forEach와 map 메서드를 타이핑해보았으므로 첫 타이핑을 조금 더 구체적으로 했습니다.
const r1 = [1, 2, 3].myFilter((v) => v < 2);
// const r1: number[]
const r2 = [1, 2, 3].myFilter((v, i, a) => {});
// const r2: number[]
const r3 = ['1', 2, '3'].myFilter((v) => typeof v === 'string');
// const r3: (string | number)[]
const r4 = [{ num: 1 }, { num: 2 }, { num: 3 }].myFilter(function(v) {
return v.num % 2;
});
/*
const r4: {
num: number;
}[]
*/
interface Array<T> {
myFilter(callback: (v: T, i: number, a: T[]) => void, thisArg?: any): T[];
}