본문 바로가기

전체 글50

[ts, fp] @fp-ts/schema를 사용한 안전한 데이터 유효성 검사, 변환 선행으로 Either과 Option에 대한 이해가 필요합니다. fp-ts가 3버전으로 개발하면서 기존의 io-ts를 fp-ts/schema가 대체하게 된다. 아직 레포가 생성된지 오래되지 않아 부족한 것이 있겠지만, 기존의 io-ts보다 훨신 진일보한 모습에 반해 파고들게 되었다. zod에 대비해 뚜렷한 강점도 보이고 fp-ts를 기존에 사용하던 유저라면 같이 쓰기에 훨신 강력할 수 있을 것 같다. 사용하기에 앞서 먼저 사전 지식에 대해 설명하겠다. 0. AST AST 유형은 ADT(대수 데이터 유형), 즉 구조체 및 튜플과 같은 공용체에 대한 명세서이다. Schema에서의 AST는 더 대략적이고 작은 부분을 다룬다. 밑에 설명할 Schema는 AST의 wrapper라고 이해하면 쉽다. 1. Schema.. 2023. 2. 6.
2022년 개발 회고 2022년을 돌아보면 아쉽기도 하고, 그래도 나름의 성과도 있음에 약간의 만족을 하기도 하다. 2022년을 시작하며 내가 세 가지 길에 대한 고민을 했었다. 1. 타입스크립트를 깊게 파보고 nextjs를 해보고 프론트엔드 관련 공부를 계속할 것인가. 2. 러스트를 통한 웹 어셈블리, 차세대 웹 프레임워크를 배울 것인가. 3. 하스켈을 배우고 하스켈 프로그래머가 되고 싶다. 연말쯤 되서야 어느 정도 방향성을 정했다. 러스트를 이용한 프론트엔드 개발은 아직 좀 멀었다. (최근 주목받는, 내가 사용해보고 싶은 leptos는 아직 0.1 alpha이다.) 그러니 기존의 프론트엔드 개발을 하며 서서히 Rust 기반으로 넘어갈 것이며, 하스켈은 공부 목적으로 계속 공부를 하면서 서브 언어로 쓸 것이다. Rust는 .. 2023. 1. 2.
type safety한 RESTful을 위한 zodios (nextjs13 appDir, monorepo) zodios는 기존 axios 통신에 zod를 resolver처럼 활용하여 type safety하고 미리 에러 검출을 할 수 있게 해줍니다. type alias도 지원해주고 zod를 기반으로 타입 추론을 해주므로 안전하고 편한 RESTful이 가능합니다. 클라이언트단을 위한 react-query wrapper도 지원하므로 그야말로 완벽 https://www.zodios.org/ Zodios | Zodios End-to-end typesafe REST API toolbox www.zodios.org 먼저 제 monorepo 패키지 구조는 다음과 같이 되어 있습니다. 여기서 dashboard-web에서 nextjs13의 appDir feature을 사용하여 작업하겠습니다. pnpm add @zodios/co.. 2022. 12. 16.
Module Augmentation와 Interface Merge를 활용한 bottom - up 식 구현 모듈의 interface에 merge 함으로써 타입을 관리하면 더 강력한 추상화와 중앙집권식이 구조가 아닌 개별 관리 구조를 가져갈 수 있다. (bottom - top) remix.run 프레임워크를 사용한 예제이나, 해당 프레임워크를 몰라도 상관없습니다. app/service/api.ts export interface ApiFns {} export type ApiFnKeys = keyof ApiFns; export type ApiProps = { [key in ApiFnKeys]: Parameters[0]; }; export type Method = { method: M }; type ApiMethod = { [key in ApiFnKeys]: ApiFns[key]['method']; }; /* ..... 2022. 7. 24.