올해부터 한 스터디에 속해서 공부를 하게 되었다.
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 함수를 사용한 코드를 이 포스팅에 추가해 볼 예정..!