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