Jun4928 / wanted-pre-onboarding-challenge-BE-task-JAN.2023

JAN.2023 wanted 프리온보딩 챌린지 BE 사전과제
29 stars 36 forks source link

사전과제 제출 #15

Open ktk8916 opened 1 year ago

ktk8916 commented 1 year ago

1. 본인이 작성했던 코드 중 공유하고 싶은 코드를 이유와 함께 마크다운 code block 을 사용해 올려주세요

코드로서 의존관계를 모두 선언한다는 것은 각 코드들이 강하게 결합되어 있다는 뜻이고, 이는 유지보수의 큰 걸림돌이 됩니다. 또, 객체지향 설계 원칙 중 OCP와 DIP를 지키는 좋은 방법이 됩니다.

 ### 4. 본인이 사용하는 언어의 Functional Programming(함수형 프로그래밍) 스펙을 예제와 함께 소개해 주세요

명령형으로 for, if등을 사용하는 것이 아닌 자료의 흐름에 따라 선언형으로 코드를 작성하는 것입니다. JS에서는 함수가 1급 객체이기에 함수를 인자로 사용할 수 있습니다.

const pow = n => nn; const arr = [1, 2, 3, 4, 5]; console.log(arr.map((i)=> ii)); console.log(arr.map((i)=> pow(i)));

 ### 5. (코드 작성) 다음 스펙을 만족하는 delay 함수를 작성해 주세요 (hint: Promise 사용)

type SomeFunctionReturnString = () => string

function delay(f: SomeFunctionReturnString, seconds: number): Promise { return new Promise((resolve, reject)=>{ setTimeout(()=>{ try{ resolve(f()); } catch(e){ reject(e); } }, seconds*1000); }); };

const success = () => { return "successfully done"; };

const fail = () => { throw new Error("failed"); };

delay(success, 2) .then((res) => console.log(res)) .catch((e) => console.log(e));

delay(fail, 2) .then((res) => console.log(res)) .catch((e) => console.log(e));


 **결과값**
 $ ts-node delay.ts
 successfully done
 failed

 ### 6. 강의를 통해서 기대하는 바, 또는 얻고 싶은 팁을 적어주세요

흔히 함수형이라고 하면 JAVA에 Stream API와 JS에 map, filter, reduce 등등.. 순회에 관련된 것 이상으로는 생각하기 어렵습니다. 이번 강의를 통해 함수형 패러다임을 더 깊게 이해하고 싶습니다. ``