study/JavaScript & TypeScript 10

Jest의 Matcher 함수: objectContaining과 arrayContaining

expect.objectContaining()주어진 객체가 지정된 속성을 포함하고 있는지를 확인하는 Matcherexpect(receivedObject).toEqual( expect.objectContaining({ id: expect.any(Number), name: 'John', }));→ receivedObject는 id 속성(any Number)과 name 속성(’John’)을 포함하고 있어야 함test('객체의 부분 일치', () => { const obj = { name: 'Alice', age: 25, city: 'Wonderland' }; expect(obj).toEqual(expect.objectContaining({ name: 'Alice', age: 25 })..

JavaScript의 원시타입과 참조타입

원시 타입(Primitive Types)단일 값만을 가지고, 값 자체가 변수에 저장됨e.g. number, string, boolean, null, undefined, symbol, bigint 참조 타입(Reference Types)객체를 참조하는 타입으로, 변수에는 실제 값이 아닌 값이 저장된 메모리 주소가 저장됨e.g. Object, Array, Function, Date, RegExp, Map, Set 차이점원시 타입은 스택에 저장, 참조 타입은 힙에 저장원시 타입은 불변, 참조 타입은 가변원시 타입은 값 자체가 복사되어 전달되지만, 참조 타입은 메모리 주소가 복사되어 전달됨참조타입의 데이터를 변수에 할당할 때, 변수에는 그 데이터가 저장된 메모리 주소가 저장됨 (실제 데이터는 힙 메모리에, 데이..

Jest에서 toBe와 toEqual의 차이점

toBeJavaScript의 === 연산자를 사용하여 엄격한 동일성 비교를 수행원시 값(숫자, 문자열, 불리언 등)에 대해서는 값이 동일하면 통과객체, 배열 등의 참조형 데이터 타입에서는 동일한 객체(참조가 같은 경우)일 때만 통과test('toBe example', () => { // 원시 값 비교 expect(3).toBe(3); // 통과 expect('hello').toBe('hello'); // 통과 // 객체 비교 const obj = { a: 1 }; expect(obj).toBe(obj); // 통과 expect(obj).toBe({ a: 1 }); // 실패}); toEqual객체나 배열의 모든 속성을 재귀적으로 비교하여 값의 동등성을 검사객체나 배열이 같은 속성과 값을 가지..

TypeScript 내장 유틸리티 타입: Partial, Omit, Pick

PartialPartial: 제네릭 타입 T의 모든 속성이나 필드를 선택적으로 사용할 수 있음객체의 일부 속성만 업데이트하거나 사용할 때 유용interface Todo { title: string; description: string;}type PartialTodo = Partial;const todo1: PartialTodo = {}; // (O)const todo2: PartialTodo = { title: 'Learn TypeScript' }; // (O)const todo3: PartialTodo = { title: 'Learn TypeScript', description: 'Study', }; // (O) OmitOmit: 제네릭 타입 T에서 속성 K를 제외한 새로운 타입을 생성기존 ..