19 12 회고 - ChoDragon9/posts GitHub Wiki
assign 함수로 자료 구조를 만들때 이슈
현상
assign 함수로 자료 구조를 조합하여, 새로운 자료 구조를 만들었다. 하지만 interface에 적합하지 않음에도 컴파일 타임에 정상동작한다. 어떻게 해결해야 할까
해결 방안
- 제네릭으로 전달받은 타입의 Partial로 사용
export function assign<T>(obj: Partial<T>, ...objs: Partial<T>[]): T {
return Object.assign(obj, ...objs)
}
비교연산 강제성 제거
문제점
isSame
함수를 사용하는 것은 선언적이고 함수 조합시 유용하다. 하지만 비교연산 하나만 사용할 때는 오히려 부자연스럽다.
해결 방안
isSame
은 함수 조합 시 또는 캐싱할 때 사용한다.===
대신isSame
을 강제적으로 사용하는 것은 하지 않는다.
Vuex의 Action과 Mutation의 함수명 중복 해결
문제점
Action과 Mutation에서 정의한 함수명이 중복되어도 추적이 되지 않는 다. 매번 검색을 통해서 해결 가능하지만 검색을 하지 않고 변경을 가할 경우 이슈가 발생한다.
해결방안
Action과 Mutation의 함수명을 상수로 정의한다. 상수를 사용하여 정의 및 사용하도록 한다. 해당 방안을 사용하면 nuxt 라이프사이클 중 fetch
에서도 중복을 해결할 수 있다.
코드
export default
가 아닌 export const
로 선언하면 IDE에서 Add import statement
를 지원받을 수 있다.
/auth/action.ts
export const changeUnauthorizedUser = 'changeUnauthorizedUser'
export const fetchCheckLogin = 'fetchCheckLogin'
/auth/mutation.ts
export const mutateAuth = 'mutateAuth'
export const mutateAdmin = 'mutateAdmin'
export const mutateUnauthorizedUser = 'mutateUnauthorizedUser'
/auth/index.ts
export * from './action'
export * from './mutation'