Typescript를 이용한 자체 리듀스 방식
8919 단어 arraystypescriptjavascript
Array.prototype.reduce .
이 짧은 글에서는 Typescript를 사용하여 이 고차 함수에 대해 설명하고 싶습니다.
먼저 Array 프로토타입 유형을 확장해 보겠습니다. 확신이 서지 않는 부분입니다. Typescript 컴파일러는 불평하지 않지만 여기서 뭔가 잘못되었다고 생각합니다. 당신이 무엇을 알고 있다면, 알려주세요.
interface Array<T> {
myReduce(cb: (previousValue: T, currentValue: T, index: number, array: T[]) => T, initialValue: T): T;
}
그리고 함수 자체는 다음과 같아야 합니다.
Array.prototype.myReduce = function<ReducedElem, ReducedValue>(callback: (previousValue: ReducedValue, currentValue: ReducedElem, index: number, array: ReducedElem[]) => ReducedValue, initialValue: ReducedValue): ReducedValue {
let i = 0;
let reduced = initialValue;
if (arguments.length < 2) {
i = 1;
reduced = this[0];
}
for (i = 0; i < this.length; i++) {
reduced = callback(reduced, this[i], i, this)
}
return reduced;
}
몇 가지 예를 통해 이 솔루션을 테스트했습니다.
// Classic usage - sum the numbers in the array
const numbers = [1, 10, 100, 1000];
numbers.myReduce((sum, curr) => sum + curr, 0) // Result: 1111
// Find the most recent date
const dates = [
'1999/01/01',
'2022/12/01',
'2010/05/01',
'2022/01/01'
];
dates.myReduce((max, curr) => curr > max ? curr : max, dates[0]) // Result: '2022/12/01'
// Flatten an array
const persons = [['Andrew', 'Joe'], ['Margaret', 'Sylvia'], ['Andrew', 'Rebecca', 'Joe', 'Sylvia']];
persons.myReduce((flatArray, currArray) => flatArray.concat(currArray), [])
/* [
'Andrew', 'Joe', 'Margaret', 'Sylvia', 'Andrew', 'Rebecca', 'Joe', 'Sylvia'
]
*/
이 예제는 잘 작동하고 예상한 결과를 제공했습니다. Typescript 컴파일러는 이러한 예제에 대해서도 불평하지 않습니다.
타이핑 기능에 대한 자세한 내용은 Typescript 공식 사이트의 aFunctions chapter를 참조하는 것이 좋습니다.
Reference
이 문제에 관하여(Typescript를 이용한 자체 리듀스 방식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/icelandico/own-reduce-method-using-typescript-n6l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)