[1주차] 학점 계산기(Grade-Calculator) 만들기

toto9602·2022년 1월 29일
0

Re: 스터디

목록 보기
1/3

올해부터 한 스터디에 속해서 공부를 하게 되었다.

typescript와 node를 배우는 방향으로 가닥이 잡힌 것 같고,
주차별로 학습한 내용을 블로그 등으로 정리하는 것을 권하셔서 한번 해 보기로!

첫 시간의 과제는 typescript를 활용하여 '학점 계산기' 기능을 만드는 것이었다.

현재까지 필자가 알고 있는 typescript의 특징은 자바스크립트에 비해 데이터 타입을 보다 분명히 한다는 것 정도밖에 없어서, 우선 다음과 같이 작성했었다.

type GradeScoreType = {[grade:string]:number} //key는 확실치 않지만 type은 확실할 때

const GradeScore: GradeScoreType = {
    'A+':4.5,
    'A':4.0,
    'B+':3.5,
    'B':3.0,
    'C+':2.5,
    'C':2.0,
    'D+':1.5,
    'D':1.0,
    'F':0.0,
}

const GradeCalculator = (SampleGrade:Grade[]) => {

    let TotalScore:number = 0;
    let TotalCredit:number = 0;
    for (let {성적, 학점, 과목명} of SampleGrade) {
        TotalScore += GradeScore[성적] * 학점 ;
        TotalCredit += 학점;
    }

    const GradeResult:number = parseFloat((TotalScore/TotalCredit).toFixed(2));
    console.log(`${TotalCredit}학점에 ${GradeResult}입니다.`)
}

GradeCalculator(SAMPLE_GRADE_ONE);

계산의 대상이 되는 데이터는 성적, 학점, 과목명으로 interface가 정의되어 있고,
그 형식의 배열 형태였다.

필자는 반복문과 구조분해할당을 활용해서 코드를 짰었는데,
다른 스터디원들의 코드를 보니 reduce함수를 사용했으면 더 깔끔했을 것 같다!
조만간 reduce 함수를 사용한 코드를 이 포스팅에 추가해 볼 예정..!

profile
주니어 백엔드 개발자입니다! 조용한 시간에 읽고 쓰는 것을 좋아합니다 :)

0개의 댓글