-
2023 - 07 - 21 타입스크립트 프로젝트 : 성적표 프로그램Today I Learned/TIL 07 2023. 7. 27. 01:52
오늘 배운 것: 성적표 프로그램
- 학생 정보 및 시험 점수 입력 기능
- 평균 점수 및 학점 계산 기능
npm init -y tsc --init --rootDir ./src --outDir ./dist --esModuleInterop --module commonjs --strict true --allowJS true --checkJS true package.json의 “scripts” 항목을 다음과 같이 변경 "scripts": { "start": "tsc && node ./dist/index.js", "build": "tsc --build", "clean": "tsc --build --clean" }, src 디렉토리(폴더) 생성 src 폴더 내부에 index.ts 파일 생성. 그 안에서 코드 작업
1. 평균점수에 따른 학점부여.
90점 이상 -> A
80점 이상 -> B
70점 이상 -> C
60점 이상 -> D
그 외 -> F
// AssignGrade Code 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"; } }
2. 학생이 가져야 할 속성을 정의해서 객체로 만들기. (Interface는 객체의 구조를 정의하는 방법)
객체가 특정 인터페이스를 구현하려면 인터페이스에 정의된 모든 속성을 가져야 한다.
학생의 이름과 나이, 그리고 성적 5가지를 묶어서 scores객체에 넣음.
// Student Interface Code interface Student { name: string; age: number; scores: { korean: number; math: number; society: number; science: number; english: number; } };
3. 위에서 정의된 Student라는 타입의 객체를 받아서 평균을 계산하는 calculateAverage 함수.
// Calculate Average 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; // 이렇게 과목수인 5로 나눌수도 있지만, // 오브젝트 키의 길이로 나누면 숫자가 바뀔때마다 새로 입력안해도 된다. const average = sum / Object.keys(student.scores).length; return average; }
4. Student 생성 함수.
// create Student function createStudent( name: string, age: number, korean: number, math: number, society: number, science: number, english: number, ): Student { return { name, //name = name 의 축약. value값이 다를경우 따로 써줘야함. age, scores: { korean, math, society, science, english }} }
5. 성적 출력함수
// Print Result function printResult(student: Student): void { const average = calculateAverage(student); // 평균계산 const grade = assignGrade(average); // 계산된 평균으로 학점 추출 console.log( `${student.name} (${student.age}세) - 평균: ${average.toFixed( 2 )}, 학점: ${grade}` ); }
6. 메인 함수 (가장 아래, 호출)
// main function main(): void { const spartan = createStudent("Jake", 30, 95, 89, 76, 98, 97); // 이름, 나이, 5과목 성적들 printResult(spartan); } main()
명령어 npm run build npm run start
'Today I Learned > TIL 07' 카테고리의 다른 글
2023 - 07 - 23 타입스크립트 TypeScript - 기본 타입, boolean, number, string, 배열, 템플릿리터럴, 튜플, tuple, enum (0) 2023.07.27 2023 - 07 - 22 ES6 소프트웨어 아키텍쳐 (0) 2023.07.27 2023 - 07 - 20 타입스크립트 .d.ts 파일, types, JSDoc (0) 2023.07.26 2023 - 07 - 19 컴파일러 Complier, tsc, 타입스크립트 컴파일러, tsconfig.json, 컴파일러 옵션 (0) 2023.07.25 2023 - 07 - 18 타입스크립트 TypeScript의 장점, 자바스크립트의 약점 보완, 객체지향 프로그래밍 OOP (0) 2023.07.25