TypeScript
[실습] 성적표 프로그램
차돌박이츄베릅
2023. 7. 27. 05:28
프로젝트 세팅 및 확인 과정
- 프로젝트 디렉토리 새로 만들기
- [터미널] mkdir 폴더명 : 폴더 만들기
- [터미널] cd 폴더명 : 폴더로 이동
- [터미널] npm init -y
- [터미널] tsc --init --rootDir ./src --outDir ./dist --esModuleInterop --module commonjs --strict true --allowJS true --checkJS true
- --rootDir ./src : 프로그램의 소스 파일이 들어가는 경로는 src 디렉토리입니다.
- --outDir ./dist : 컴파일이 된 파일들이 들어가는 디렉토리는 dist 디렉토리입니다.
- --esModuleInterop : CommonJS 방식의 모듈을 ES모듈 방식의 import 구문으로 가져올 수 있습니다.
- [package.json] 파일의 “scripts” 항목 수정
"scripts": {
"start": "tsc && node ./dist/index.js",
"build": "tsc --build",
"clean": "tsc --build --clean"
}, - 최상위에서 src 디랙토리 생성
- (src/index.ts 코드 작성 후)
- [터미널] npm run build : 프로젝트를 빌드. 컴파일 에러 확인 가능
(dist/index.js) 파일이 생성된 걸 확인할 수 있음 - [터미널] npm run start : 결과 확인
프로젝트 코드
(src/index.ts)
// Student는 type이라고 생각하면 됨
// Student라는 type의 객체를 받아서 평균을 계산하는 calculateAverage라는 함수를 만들거
interface Student {
name: string;
age: number;
scores: {
korean: number;
math: number;
society: number;
science: number;
english: number;
};
}
// 평균점수를 매개 변수로 받고
// 학점을 문자열로 return 해주는 함수
function assignGrade(average: number): string {
if (average >= 90) {
return 'A';
} else if (average >= 80) {
return 'B';
} else if (average >= 70) {
return 'C';
} else if (average >= 60) {
return 'D';
} else {
return 'F';
}
}
// function calculateAverage(student: Student) : number {
// const scoresArr = Object.values(student.scores);
// return scoresArr.reduce((calc, curr) => calc += curr) / scoresArr.length
// }
function calculateAverage(student: Student): number {
const sum = student.scores.korean + student.scores.math + student.scores.society + student.scores.science + student.scores.english;
const average = sum / 5;
return average;
}
// 아래 인자들이 주어지면 student라는 객체로 변환해주는 함수
function createStudent(name: string, age: number, korean: number, math: number, society: number, science: number, english: number): Student {
return {
name, // name : name의 축약표현
age, // age : age
scores: {
korean,
math,
society,
science,
english,
},
};
}
function printResult(student: Student): void {
const average = calculateAverage(student); // 평균을 계산
const grade = assignGrade(average); // 계산된 평균을 기준으로 학점을 추출
console.log(`${student.name} (${student.age}세) - 평균: ${average.toFixed(2)}, 학점: ${grade}`);
}
function main(): void {
const spartan = createStudent('Spartan', 30, 95, 89, 76, 90, 97);
printResult(spartan);
}
main();