Today I Learned/TIL 07
-
2023 - 07 - 28 타입스크립트 별다방 프로젝트 - 2Today I Learned/TIL 07 2023. 7. 31. 22:43
오늘 할 일 : 별다방 프로젝트 2 1. 어드민 권한 체크 함수 function isAdmin(user: User): boolean { return user.role === "admin"; } 2. 고객 권한 체크 함수 function isCustomer(user: User): boolean { return user.role === "customer"; } 3. 음료 등록 함수 - 어드민 : 음료 목록에 음료를 새로 등록하는 addBeverage 함수 음료 등록은 어드민만 가능해야 하므로, 어드민만 호출할 수 있어야 한다. function addBeverage(user: User, name: string, price: number): void { if (!isAdmin(user)) { console.lo..
-
2023 - 07 - 27 타입스크립트 별다방 프로젝트 - 1Today I Learned/TIL 07 2023. 7. 31. 22:43
오늘 할 일 - 별다방 프로젝트 별다방 프로젝트 구성: 1. 음료 등록기능 - 어드민 2. 음료 삭제기능 - 어드민 3. 음료 조회기능 - 어드민, 고객 4. 음료 주문기능 - 고객 5. 음료 준비 완료 기능 - 어드민 6. 음료 수령기능 - 고객 프로젝트 셋팅 npm init -y tsc --init --rootDir ./src --outDir ./dist --esModuleInterop --module commonjs --strict true --allowJS true --checkJS true 뜻: --rootDir ./src : 프로그램의 소스 파일이 들어가는 경로는 src 디렉토리 --outDir ./dist : 컴파일이 된 파일들이 들어가는 디렉토리는 dist 디렉토리 --esModuleInt..
-
2023 - 07 - 26 타입스크립트 유틸리티 타입 (Partial, Required, Readonly, Pick, Omit), 선택적 속성Today I Learned/TIL 07 2023. 7. 31. 22:43
오늘 배운 것 : 타입스크립트 유틸리티 1. Partial -> 여기서 T는 객체다. Person이라는 인터페이스는 name, age로 구성되어있다. updatePerson을 보면 2번째 인자로, fields: Partial를 받고있다. 이 field라는 인자가 구성될 수 있는 경우의 수 3가지. 1. name이라는 속성만 존재 2. age라는 속성만 존재 3. name, age 속성 둘 다 존재 이 밖의 상황은 허용하지 않음. 예를들어 { name, gender }와 같이 기존에 없는 속성을 넣어서는 안된다. interface Person { => Person이라는 인터페이스는 name, age로 구성되어있다. name: string; age: number; } const updatePerson = (..
-
2023 - 07 - 25 타입스크립트 ENUM, 객체 리터럴 (Object)Today I Learned/TIL 07 2023. 7. 31. 22:42
타입스크립트 enum을 쓰는 경우와 객체(Object)를 쓰는 경우 enum : 열거형 데이터 타입 상수의 그룹화를 위해선 enum이 좋은 타입이 될 수 있다. enum 타입은 코드의 가독성을 높이고, 명확한 상수 값을 정의할 수 있다. 또한, 컴파일 시에 자동으로 숫자 값으로 매핑되므로 따로 값을 할당할 필요가 없다. enum UserRole { ADMIN = "ADMIN", EDITOR = "EDITOR", USER = "USER", } enum UserLevel { NOT_OPERATOR, // 0 OPERATOR // 1 } function checkPermission(userRole: UserRole, userLevel: UserLevel): void { if (userLevel === User..
-
2023 - 07 - 24 TypeScript 타입스크립트 const, readonly, any, unknown, unionToday I Learned/TIL 07 2023. 7. 27. 10:50
오늘 배운 것: 타입스크립트 let, const, readonly, any, unknown, union let : 변수선언 (값을 변경할 수 있다.) let num: number = 5; console.log(num); // 출력: 5 num = 10; console.log(num); // 출력: 10 const: 상수선언 (값을 변경할 수 없다. 즉 =로 재할당할 수 없다.) const num: number = 5; console.log(num); // 출력: 5 num = 10; // 에러: 'num'은 const로 선언되었으므로 다시 할당될 수 없음! const nums: number[] = []; console.log(nums); // 출력: [] nums.push(1); // 할당은 되지 않아도..
-
2023 - 07 - 23 타입스크립트 TypeScript - 기본 타입, boolean, number, string, 배열, 템플릿리터럴, 튜플, tuple, enumToday I Learned/TIL 07 2023. 7. 27. 10:14
오늘 배운 것 타입스크립트 TypeScript - 기본 타입 변수 : 프로그래밍 언어에서 데이터를 저장하는공간 타입 : 데이터의 타입 (숫자열, 문자열, 논리값, 배열, 객체 등등) 타입을 이해하고 올바르게 사용하면 코드의 가독성과 안정성이 향상된다. 잘못된 타입을 사용하거나, 예상치 못한 타입이 사용될 경우에는 오류가 발생할 수 있는데, 이러한 오류는 컴파일 시간에 발생하는 것이 아닌, 실행시간에 발생한다. 타입 안정성: 코드가 예상한 타입대로 동작함을 보장하는 것. 타입 안정성이 높을수록 코드 품질이 좋아지며, 실행시간에 발생할 수 있는 오류를 줄일 수 있다. 또한 타입을 제대로 이해하고 활용하면 코드의 안정성이 향상되며, 테스트와 디버깅 시간을 줄일 수 있다. TypeScript는 정적 타입 시스템..
-
2023 - 07 - 22 ES6 소프트웨어 아키텍쳐Today I Learned/TIL 07 2023. 7. 27. 09:35
계층형 아키텍처 설정 및 기본 서버 세팅 model → service → controller → router 객체지향 (모듈의 class화) babel 을 사용한 최신 문법 사용 nodemon을 사용한 개발환경 세팅 필수 라이브러리 설치 및 명령어 세팅 npm install -D nodemon @babel/core @babel/node @babel/preset-env // 폴더 최상위 경로에 babel.config.json 생성 { "presets": ["@babel/preset-env"] } 2. app.js 분리 init.js 생성 db.js 생성 app.js 에서 실행 소스 init.js 로 분리 app.js는 express app만 관리 init 을 통해 db, express 서버 실행 3. ES..
-
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. 평..