분류 전체보기
-
TypeScript - Core Syntax & Feature(JavaScript와 차이점)개발언어/TypeScript 2023. 4. 16. 15:38
type에 대한 자바스크립트와 타입스크립트의 차이점 자바스크립트 type은 동적인 타입이다. 즉, 변수를 가질때 처음엔 숫자일 거라고 가정했지만 나중에 문자열이 그곳에 할당 되어도 완전히 괜찮다. 그리고 그것이 typeof 연자자를 가지는 이유다. typeof연산자를 가지므로써 런타임 도중 당시의 type을 확인할 수 있다. 반면 타입스크립트는 type 정적이 타입이다. 즉 개발 도중 변수와 매개변수의 타입을 정의 하는 것을 끝낸다. 런타임 도중에 갑자기 정의한 type이 변하지는 않는다. 물론 타입스크립트는 결국 자바스크립트로 컴파일 되기 때문에 이론적으로 그럴수도 있다. 타입스크립트를 사용할때는 정의 당시 숫자형이여야 한다고 설정했던 변수에 문자열을 할당하면 개발 도중에 Error가 발생한다. 때문 ..
-
TypeScript - Core Syntax & Feature(Core Type)개발언어/TypeScript 2023. 4. 16. 14:05
Core Syntax & Feature 타입스크립트가 어떤 type을 제공하고 지원하는지 type들로 작업하는 방법 type을 할당하는 방법 type을 사용하면 얻어지는 이점 Core Types 타입스크립트는 자바스크립트에 덧붙여 더 많은 type을 제공한다. 또한 타입스크립트는 사용자가 정의한 사용자정의의 type도 작성하고 사용할 수 있게 해준다. 우선 자바스크립트가 가진 핵심 타입부터 시작해 자바스크립트와 타입스크립트에 각각 어떤 type이 지원되는지 두 언어 사이에 차이점이 의미하는 바를 알아본다. number 자바스크립&타입스크립트에서 사용하는 핵심타입 중 하나는 number(숫자형)이다. 두개의 언어에서 number type은 하나 뿐이다. 정수형이나 실수형을 세분화 나누는 타입은 존재하지 않..
-
JavaScript - nullish coalescing(널 병합)/ Optional Chaining개발언어/JavaScript 2023. 4. 15. 16:06
ES2020에서 추가된 ?? (널 병합(nullish coalescing)) 연산자와 ?. (옵셔널 체이닝(optional chaining)연산자 이다. 널 병합 연산자 &&(and)연산자 ture 값 일때 뒤로 넘어간다. const a1 = 'a' const b1 = a1 && 3; console.log(b1);//3 const a2 = 0 const b2 = a1 && 3; console.log(b1); //0 널 병합 연사자는 주로 ' || ' 연산자 대용으로 사용되며, falsy 값 (0, ' ' , false, NaN, null, undefined) 중 null과 undefined만 따로 구분한다. const a = 0; const b = a || 3; // ||연산자는 falsy값이면 뒤로 ..
-
NodeJS - Promise, async/await개발언어/Node.js 2023. 3. 27. 15:51
Promise function findAndSaveUser(Users) { Users.findOne({}) .then((user) => { user.name = "surge100"; return user.save(); }) .then((user) => { return Users.findOne({ gender: "m" }); }) .then((user) => { //생략 }) .catch((err) => { console.error(err); }); } Promise.all(배열): 여러 개 의 프로미스를 동시에 실행 하나라도 실패하면 catch로 간다. allSettled로 실패한 것만 추려낼 수 있다. 콜백 헬이라고 불리는 지저분한 자바스크림트 코드의 해결책 프로미스 : 내용이 실행은 되었지만 결과를 ..
-
GraphQL - GraphQL로 정보 주고받기Web 개발/Web 기본 지식 2023. 3. 23. 17:05
GraphQL로 정보 주고 받기 REST API는 어떤 라이브러리나 기술이 아니라 정보를 주고 받는 형식이다. 그래서 해당 형식에 따라서 여러 라이브러리들이 정보를 주고 받을수 있다. 위 화면은 Apllo라이브러리에서 제공하는 UI이다. 위 UI로 만들고 있는 GraphQL프로젝트에 여러 명령어들을 실행 할 수 있는 UI를 제공한다. REST API에서 사용되는 PostMan과 같은 기능을 한다고 생각하면 된다. GraphQL 사용해 보기 teams정보 받아오기 query는 REST API에서 GET과 같은 것이다. 그 다음에 받아올 객체인 teams{ }을 입력하고 그 안에 team객체에서 받아오기를 원하는 모든 속성을 입력해준다. 일단 위 그림에서는 team에 존재하는 모든 속성을 입력한 다음에 재생..
-
TypeScript - Tuple(튜플)개발언어/TypeScript 2023. 3. 22. 15:26
Tuple(튜플) 튜플은 배열의 길이가 고정되고 각 요소의 타입이 지정되어 있는 배열 형식을 의미한다. //튜플 타입으로 선언 let x: [string, number]; //초기화 x = ["hello", 10]; // 성공 //잘못된 초기화 x = [10,"hello"]; //오류 튜플 타입을 사용하면, 요소의 타입과 개수가 고정된 배열을 표현할 수 있다. 단 요소들의 타입이 모두 같을 필요는 없다. 예를 들어 위 코드와 같이 number , string이 쌍으로 있는 값을 나타내고 싶을 수 있다. console.log(x[0].substring(1)); console.log(x[1].substring(1)) //오류, 'number'에는 'substring' 이 없다. console.log(x[0]..
-
Jest - Testing2FrameWork/Jest 2023. 3. 20. 11:19
실제 구현코드 user.service.ts async updateUser(id: number, userUpdateRequestDto: UserUpdateDto) { const userId = await this.usersRepository.findOne({ where: { id } }); if (!userId) { throw new BadRequestException('존재하지 않는 회원번호 입니다.'); } const { name, nickName, memo } = userUpdateRequestDto; const user = this.usersRepository.create({ name, nickName, memo }); return await this.usersRepository.update(id,..
-
Jest - Jest Object1 (jest.spyOn( ))FrameWork/Jest 2023. 3. 10. 15:43
Jest Object jest.spyOn( ) mocking에는 스파이(spy)라는 개념이 있다. 테스트를 작성할 때, 어떤 객에에 속한 함수의 구현을 가짜로 대체하지 않고, 해당 함수의 호출 여부와 어떻게 호출 되었는지만 알아내야 할 때가 있다. 이럴 때, Jest에서 제공하는 jest.spyOn(object,methodName)함수를 사용하면 된다. 실제 구현 함수1 obj.js const calculator = { add: (a, b) => a + b, }; module.exports = calculator; obj.test.js const calculator = require("../../lib/obj"); describe("Jest Object jest.spyOn() ", () => { test..