실제로 TypeScript의 문법에 대해 들어가기 이전에, ts파일을 어떻게 실행시키는지 먼저 간단하게 알아보자. TS파일은 JS가 사용가능한 모든 곳에서 다 사용이 가능하다. 하지만, ts파일을 바로 브라우저나 node에서는 완전히 읽어내지 못한다. 즉, tsfile -> js로 변환 해줄 필요가 있다는 것이다. 1. node에서 ts파일 npm i -g ts-node 자, ts-node를 npm을 통해 설치해주자. 그리고 지금까지 해왔던 node main.ts형식이 아닌 ts-node main.ts 로 하면 정상적으로 node환경에서 ts파일을 띄울 수 있다. 2. 브라우저에서 ts파일 //typescript 설치 npm i typescript //ts-> js로 컴파일 tsc {fileName}.t..
전체보기
TypeScript가 좋다는 말은 이미 많이 들었다. 근데 도대체 왜 사람들은 그렇게 TypeScript에 열광하는 것 일까? TypeScript에 대해 자세히 들어가기 전에 TypeScript가 무엇인지 왜 사용해야 하는 이유부터 알아보자. What is TypeScript? 공식 홈페이지에서는 TypeScript is JavaScript with syntax for types 라고 소개하고 있다. 즉, JavaScript 이지만, types를 지정할 수 있는 문법이 추가 됐다는 뜻이다. (superset of JavaScript) 이러한 TS(TypeScript)는 어떠한 특징들을 가지고 있을까? 1. TS는 자바스크립트의 superset이다. 그렇기 때문에 TS는 JS가 사용되는 모든 곳(node...
참조형 데이터 타입을 다루다 보면 접하게 되는 깊은 복사와 얕은 복사에 대해 기본개념, 예시, 활용법까지 모두 다 정리해보자. 1. 기본 개념 깊은 복사(Deep Copy) 데이터 자체를 통째로 복사 한다. 데이터 자체를 통째로 복사 했기에, 새로운 주소를 가진다. 즉, 복사된 두 개의 객체는 서로 독립적인 메모리를 가지게 된다. 기본형 데이터의 경우 깊은 복사가 되지만, 참조형은 일반적으로 그렇지 않다. 얕은 복사(Shallow Copy) 데이터의 주소값만 복사한다. 즉, 복사된 두 개의 객체는 서로 같은 메모리를 가르키고 있다. 2. 예시 위 개념을 통해, 일반적으로는 기본형 타입의 데이터의 경우 깊은 복사가, 참조형 데이터의 경우 얕은 복사가 일어남을 알 수 있었다. 이를 실제 예시를 통해 확실히 ..
문제의 상세내역은 링크를 참고하자. 문제는 간단해 보인다. 10진법 의 숫자를 3진법의 숫자로 바꾸는 것이다. 하지만, 문제에서 특이한 점은 0을 사용하지 않고 4를 사용한다는 것이다. 1. 문제 접근 이 나라에서는 1은 1, 2는 2, 3은 4를 가르킨다고 생각하자. 예를 통해 이해해 보자. 10진법으로 9가 주어졌다면, 3으로 나누었을 때 몫은 3, 나머지는 0이 될 것이다. 하지만, 이 말도 안되는 나라는 0을 싫어하나보다. 0을 쓰지 못한다. 나머지를 3으로 바꿔주고, 몫을 하나 줄여주자. 그렇게 되면, 우리는 몫이 2, 나머지가 3이 되게 될 것이다. 이 나라에서 2는 2, 3은 4를 의미하므로, 최종적으로 24라는 답이 나오게 되는 것이다. 2. 전체 코드 function solution(n)..
1. 문제 문제는 아래와 같다. 결국, 늑대에게 잡아 먹히지 않고 최대한 많은 양을 모으고 그 양의 수를 리턴 해야 하는 문제이다. 2. Idea 💡 해당 문제에서 키 포인트는 갔던 길을 다시 돌아서 다른 곳으로 갈 수 있다는 것이다. 예를 들어, 1번 -> 8번 -> 7번 -> 9번 -> 5번 과 같은 방식으로도 이동이 가능하다는 것이다. 이렇게 되면 결국 모든 경우의 수를 탐색하여 각 노드에서 얻을 수 있는 양의 최대 수를 리턴 해야 한다. 단, 만약 해당 노드를 방문했을 때, 양들이 늑대에게 잡아 먹히게 된다면, 해당 노드를 물리고, 다음 노드를 탐색한다.(Backtracking) 3. Solution 완전 탐색을 하는 방법으로는 가장 크게 dfs(depth first search), bfs(bre..
일반적으로 Unit Test에서는 Database나 네트워크 연결을 하지 않고, 보통 mock을 이용하여 test를 진행한다. 하지만, 실제 DB와 연결하여 테스트를 해보라는 팀장님의 의견으로 테스트용 DB를 생성하고 해당 DB와 연결하여 테스트를 진행해 보았다. 우선, 테스팅 모듈에 database와 연결해줄 필요가 있기에, 기존에 만들어 두었던 database.module을 import 하여 주었다. database.module.ts의 코드는 아래와 같다. @Module({ imports: [ TypeOrmModule.forRootAsync({ imports: [ ConfigModule.forRoot({ envFilePath: process.env.NODE_ENV === 'test' ? '.env.t..