Typescript

    typescript로 배우는 stub, mock, spy의 차이점

    mock은 stub과 다르다. 저는 테스트 코드를 작성 시 mock과 stub의 차이를 생각하지 않고 써왔습니다. 최근 마틴 파울러의 블로그에서 Mocks Aren't Stubs 라는 글을 발견했습니다. Mocks Aren't Stubs Explaining the difference between Mock Objects and Stubs (together with other forms of Test Double). Also the difference between classical and mockist styles of unit testing. martinfowler.com 원문의 내용은 JAVA로 작성되었지만, 본 포스팅에서는 Typescript + jest로 정리하며 작성하였습니다. Test Doub..

    [Typescript] 객체지향의 SOLID 원칙

    객체지향에서 대표적인 원칙이라고 할 수 있는 SOLID 원칙에 대해서 알아보고자 합니다. 설계가 올바르게 되었는지를 확인하는 하나의 기준과 가이드라인으로써 신뢰받고 있는 원칙에 대해 학습하여 제가 하고있는 프로젝트의 설계를 점검하고 재설계하는 과정에서 도움이 되기를 기대합니다. SOLID 는 아래의 5가지 원칙으로 만들어진 단어입니다. SRP (Single segregation principle) 단일 책임 원칙 OCP (Open/closed principle) 개방-폐쇄 원칙 LSP (Liskov substitution principle) 리스코프 치환 원칙 ISP (Interface segregation principle) 인터페이스 분리 원칙 DIP (Dependency inversion princ..

    [Typescript] 객체지향의 의존관계와 캡슐화

    의존관계 객체지향 프로그래밍에서 한 객체가 다른 객체를 사용한다는 것은, 다른 객체를 생성하거나 다른 객체의 메소드를 호출하는 행위를 말합니다. 이와 같이 한 객체가 다른객체를 생성 또는 메소드를 호출할 때, 그 객체에 의존한다고 표현합니다. abstract class Weapon { public abstract attck(): void; } class Sword implements Weapon { attck(): void { console.log('Sword'); } } class Player { private weapon: Weapon; availWeapon(): void { this.weapon = new Sword(); this.weapon.attck(); // Sword } } 위 예제를 보면 ..

    [Typescript] 타입 단언, 타입 가드 ,타입 호환

    이 글은 인프런의 TypeScript 입문 - 기초부터 실전까지 강의를 듣고 정리한 글입니다. 타입 단언(Type Assertion) let z: any; z = 20; z = 'z'; let b = z; // b: any let b = z as string; // b: string 네번째 줄 까지만 봤을 때, 결국 z는 마지막에 문자열 타입으로 인식이 되었을 것이라고 추론할 수 있지만, 실제로 프리뷰를 보면 any 타입으로 되어있다. 그래서 b도 any타입을 반환한다. 이렇게, 명확한 typing이 되지 않는 문제를 해결하기 위해서 맨 마지막 줄로 z를 string type으로 단언해준 뒤 그것을 b에 부여하였다. 이 결과 b는 문자열 타입을 갖게 된다. 예시를 보자. 자바스크립트에서 사용하는 대표적인..