const productService = new ProductService();
const productService = new ProductService();
const productService = new ProductService();
// index.js import express from "express"; import { ProductController } from "./mvc/controllers/product.controller.js"; import { CouponController } from "./mvc/controllers/coupon.controller.js"; import { ProductService } from "./mvc/controllers/services/product.service.js"; import { CashService } from "./mvc/controllers/services/cash.service.js"; const app = express(); const productService = new ProductService(); const cashService = new CashService(); // 상품 API const productController = new ProductController(cashService, productService); app.post("/products/buy", productController.buyProduct); app.post("/products/refund", productController.refundProduct); // 쿠폰 API const couponController = new CouponController(); app.post("/coupons/buy", couponController.buyCoupon); app.listen(3000, () => { console.log("백엔드 API 서버가 켜졌어요!!!"); });
// product.controller.js export class ProductController { constructor(cashService, productService) { this.cashService = cashService; this.productService = productService; } buyProduct = (req, res) => { // 1. 가진돈 검증하는 코드(10줄 => 2줄 => 1줄) // const cashService = new CashService() const hasMoney = this.cashService.checkValue(); // 2. 판매여부 검증하는 코드(10줄 => 2줄 => 1줄) // const productService = new ProductService() const isSoldout = this.productService.checkSoldout(); // 3. 상품 구매하는 코드 if (hasMoney && !isSoldout) { res.send("상품을 구매합니다."); } }; refundProduct = (req, res) => { // 1. 판매여부 검증하는 코드(10줄 => 2줄 => 1줄) // const productService = new ProductService() const isSoldout = this.productService.checkSoldout(); // 2. 상품 환불하는 코드 if (isSoldout) { res.send("상품을 환불합니다."); } }; }
Ioc
제어의 역전
지뢰밭 만드는 것을 최소화 하기 위해 사용한다.
타입스크립트란? 자바스크립트의 타입을 강제시키는 언어
ex) 문자만 집어 넣는 상자 , 숫자만 집어 넣는 상자
let aaa: string = "안녕하세요"
let bbb: number = 123
let ccc: boolean = true
객체는 지원 되지 않는다!!!!
yarn init으로 패키지.제이슨 을 만들고
미리 만들어둔 index.ts에서 yarn add typescript --dev해준뒤
tsconfig.json을 만들고 typescript docs를 참조해서 내용을 첨가 해준다!!
안에서 접근 | 안에서 변경 | 자식이 접근 | 자식이 변경 | 밖에서 접근 | 밖에서 변경 | |
---|---|---|---|---|---|---|
public | 가능 | 가능 | 가능 | 가능 | 가능 | 가능 |
private | 가능 | 가능 | 불가능 | 불가능 | 불가능 | 불가능 |
protected | 가능 | 가능 | 가능 | 가능 | 불가능 | 불가능 |
readonly | 가능 | 불가능 | 가능 | 불가능 | 가능 | 불가능 |
private readonly | 가능 | 불가능 | 불가능 | 불가능 | 불가능 | 불가능 |