19 08 가이드 문서 - ChoDragon9/posts GitHub Wiki

TypeScript

any 타입 사용 금지

any 타입은 인자와 반환값의 타입을 유추하기 힘들게 합니다. TypeScript가 컴파일이 되는 시점에도 버그를 유추하기 힘듭니다. any 타입은 사용하지 않는 게 좋습니다.

상수 선언

기본 타입

기본 타입인 number, string은 const로 선언합니다.

export const ROLE_WELCOME = 'welcome'
export const ROLE_FALLBACK = 'fallback'

그룹 선언

상수에 그룹이 필요할 경우 enum으로 선언합니다. enum은 항상 Readonly로 선언되어 불변성을 띕니다.

export const enum HTTP_STATUS {
  OK = 200,
  NOT_FOUND = 404,
  INTERNAL_SERVER_ERROR = 500,
}

메소드 타입 선언

class BeeDateHelper {
  isEqualThan (
    srcDate: BeeDate, 
    targetDate: BeeDate
  ): boolean {
    return srcDate === targetDate
  }
}

메소드의 인자와 반환값의 타입을 정의하는 게 좋습니다.

isEqualThan에서 인자는 srcDate, targetDate 부분입니다. 메소드에서 인자의 타입을 정의하는 것은 코드를 해석하기 쉽게합니다. 그리고 isEqualThan 반환 타입은 boolean부분입니다.

필드 타입 선언

필드의 타입 선언하는 게 좋습니다. Lint에서 불필요한 타입선언이라고 알려주지 않는 이상 모두 선언하는 게 좋습니다.

class BeeDateHelper {
  LEAP_YEAR: number = 2000
  LAST_DATES: number[] = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

  REGEXP_DATE_DELIMITER: RegExp = new RegExp(BeeDateDelimiter.Date, 'g')
}

RxJs

RxJs 제거 이유

  1. 불필요한 상태가 만들어 짐
    • 서비스 파일, 컴포넌트 파일에 동일한 의도를 가진 상태가 각각 선언됩니다.
    • 상태가 많아질수록 코드 관리가 힘들어 집니다.
  2. 상태 의존성 관리가 어려움
    • 의존성있는 상태를 관리하기 위해서는 관리할 코드가 증가합니다.
  3. RxJs의 기능을 모두 활용하려면 러닝커브가 높습니다.
    • RxJs는 Functional Reactive Programming을 사상으로 작성되야 합니다.
    • 하지만 Reactive, Functional 각각만 봐도 러닝커브가 높습니다.

Observable, BehaviorSubject 제거

AS IS

TO BE