본문 바로가기

전체 글

(25)
[23.10.21~22] nestjs decorator 글의 목적 원래는 클래스에 대해서 글을 작성해야 하는데 몸살기운이 있어서 집중이 안되기 때문에 조금은 간단한 실험이자 nestjs를 공부하면서 nestjs를 잘 다루기 위해서는 decorator를 잘 다뤄야 한다는 느낌을 받았기 때문에 간단한 실험을 기록하려고 한다. 초보자도 복붙하고 명령어를 따라하면 바로 실행해볼 수 있도록 모든 명령어와 코드를 제공할 예정. 본론 1. 폴더 생성 후 npm init, ts 초기 셋업 vscode를 열어서 아무 폴더를 생성해줍니다. 저는 test라는 폴더를 만들었습니다. test 폴더로 들어가줍니다. npm 패키지관리자를 설치해줍니다. (node는 설치가 되어 있다는 가정입니다.) 타입스크립트도 설치해줍니다. npm init -y npm i typescript, ts-..
[23.10.22] .ts를 js로 컴파일하는것과 ts-node 에러 나는 이 둘이 같은것인줄 알았다. 하지만 너무 다르다. 단순히 동작이 1가지에서 2가지로 바뀌는게 아니고 이 둘은 완전히 다르다. 본론 nestjs코드를 확인하기 위해서 간단하게 프로젝트를 생성하고 .ts로 코드를 작성후 js로 컴파일 했는데 계속 한 인자가 undefined가 나오는것이다. 이유를 알아보니 컴파일과정에서 ts에 있는 해당 기능이 제대로 컴파일이 되지 않은것. 그래서 꼭 .ts 코드를 간단하게 확인하고 싶다면 ts-node를 설치하자! 결론 ts-node를 설치하자! 나는 이 둘이 같은것인줄 알았다. 하지만 너무 다르다. 단순히 동작이 1가지에서 2가지로 바뀌는게 아니고
[23.10.20] 프로토타입 글의 목적 본격적으로 객체를 정리하기에 앞서 프로토타입을 정리하려고 한다. ES6에서 클래스가 추가가 되고 js가 프로토타입 기반 객체지향언어에서 클래스 기반 객체지향 언어로 바뀐것이 아닌가 라고 생각하시는 분들도 있으신 것 같은데 사실은 그냥 음.... 좀 다르다. 이 부분도 정리해보려고 한다. 아니 이 부분은 클래스를 정리하면서 다루겠다. 본론 1. 프로토타입 js는 원시값을 제외한 모든것이 객체이다 라는 말을 다시금 기억하자 1.1 객체지향 프로그래밍 간단하게 속성들에 집중하여 추상화를 통해서 객체를 정의하고 객체와 객체간의 관계로 메시지를 주고받거나 데이터를 처리하는 등 객체간의 집합으로서 프로그램을 표현하는 것이다. 모든 실체(사물이나 개념)는 속성을 가지고 있고 그 속성에 집중 프로그램에 필요..
[23.10.19] 생성자 함수에 의한 객체 생성 글의 목적 객체를 만드는 방식으로 객체 리터럴만 정리했는데 생성자 함수에 의한 객체 생성도 확실하게 개념을 잡아두고 싶어서 작성한다. 원래는 js엔진의 내부슬롯과 내부메서드를 다룰까 말까 고민을 했었는데 객체를 내부 메서드로 생성과 변경을 억제시키는것을 실무에서 많이 다루는지 잘 몰라서 일단은 생성자를 먼저 정리하려고 하고 필요하면 정리하겠다. 이 참에 리터럴과 생성자의 장단점도 정리하려고 함. 본론 1. 생성자 함수에 의한 객체 생성 1.1 Object 생성자 함수 new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환함. 생성자 함수에 의해 생성된 객체를 인스턴스라고 함. Object말고도 여러 생성자 함수들이 있음 new String new Object new Number..
[23.10.18] 원시 값과 객체 글의 목적 이 파트를 정리할까 말까 고민하다가 참조와 복사를 설명하기 위해서는 이 부분부터 다루는것이 좋다고 판단되어서 글을 쓰게 됨. 본론 1. 원시 값과 객체의 비교 js는 총 7가지의 데이터 타입(number, string, boolean, null, undefined, symbol, object)이 있고 크게 원시 타입과 객체 타입으로 구분할 수 있다. 원시 타입과 객체 타입으로 구분하는 이유는 3가지의 중요한 차이점이 있기 때문이다. 원시 값은 변경 불가능한 값이고 객체 값은 변경 가능한 값이다. 원시 값을 변수, 즉 확보된 메모리 공간에 할당하면 실제 값이 저장되지만, 객체 값은 참조 값이 저장된다. 원시 값을 갖는 변수를 다른 변수에 할당하면 원시 값이 복사되어 전달되지만(pass by va..
[23.10.17] 객체 리터럴 글의 목적 layered architecture로 express 서버를 만들던 중 그냥 만들면 MVC에서 뎁스하나만 추가하여 계층만 나눈것이기 때문에, 했던거 또 하느니 class로 dependency injection을 하면서 만들었는데 객체에 대한 이해도가 부족한것 같아서 이참에 제대로 공부하려고 함. 본론 1. 객체 리터럴 1.1 객체란? js는 객체 기반의 프로그래밍 언어이다. js를 구성하는 거의 모든 것, 원시값을 제외한 나머지가 모두 객체이다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 key와 value으로 구성된다. js에서 사용할 수 있는 모든 값은 프로퍼티가 될 수 있다. 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 method라 부른다. (함수와 메서드는 ..
[23.10.16] 테스트코드와 tdd에 대한 느낌 글의 목적 테스트에 대한 공부를 막 시작하는 시기에 내가 생각하는 테스트코드의 작성이유와 tdd에 대한 생각들이 나중에 어떻게 바뀌었을지 궁금해서 현재의 생각을 정리해두려는 목적. 본론 TDD TDD란 Test Driven Development의 약자로 '테스트 주도 개발'이라고 한다. 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다. 실패하는 테스트 코드를 먼저 작성한다. (TDD) 테스트를 성공시키는 비즈니스 로직을 작성한다. TDD에 대한 나의 생각 솔직히 말해서 아직은 완벽하게 이해하기 어렵다. 테스트코드를 먼저 작성하고 통과하는 코드를 비즈니스로직에 추가하는 방식이라는건데, 현재 내가 생각하는 테스트와는 조..
[23.10.15] jest 메서드 정리 글의 목적 jest 메서드를 정리하고 익숙해질때까지 참고하려는 목적. 그 동안 테스트코드를 작성하기 보다는 postman으로 요청을 달리하면서 확인만 했었기 때문에 테스트코드 작성을 습관하하려는 하나의 속셈. 리팩토링2탄의 이해도를 높이기 위한 하나의 방편. *나의 글이 jest를 사용하여 테스트코드를 작성하고 싶은 모든 개발자에게 작은 도움이 될 수 있기를... 본문 0. jest의 간단한 사용 sum.js function sum(a, b) { return a + b; } module.exports = sum; sum.test.js const sum = require('./sum'); test('adds 1 + 2 to equal 3', () => { expect(sum(1, 2)).toBe(3); /..