Effect
TypeScript로 강력한 앱 구축을 도와주는 라이브러리
Features
- "The missing Standard Library for TypeScript"
- 복잡한 동기/비동기 프로그램을 쉽게 만들 수 있도록 설계
- 코드를 더욱 Composable, Reusable, Testable 하게
- Maximum Type-Safety(에러 핸들링 포함)
- 다양한 라이브러리 제공
- 클러스터링 & 워크플로우 제공 (알파버전)
- 폭넓은 호환성
- Node, Deno, Bun, Cloudflare Workers, Chrome
- React, Solid.JS , Vite, Next.JS, Tauri
- 동시성(Concurrency) : Fiber 기반 동시성 모델을 통해 고도로 확장 가능하고 초저지연 애플리케이션을 구현 가능
- 조합성(Composability) : 작고 재사용 가능한 구성 요소를 사용하여 유지 관리가 용이하고 읽기 쉬우며 유연한 소프트웨어를 구축 가능
- 리소스 안전성(Resource Safety) : 프로그램이 실패하더라도 리소스의 획득과 해제를 안전하게 관리 가능
- 타입 안전성(Type Safety) : 타입 추론과 타입 안전성에 중점을 두고 있어, TypeScript 타입 시스템을 최대한 활용 가능
- 오류 처리(Error Handling) : 내장 오류 처리 기능을 사용하여 구조화되고 신뢰할 수 있는 방식으로 오류를 처리 가능
- 비동기성(Asynchronicity) : 코드가 동기식이든 비동기식이든 동일하게 보이도록 작성 가능
- 관측 가능성(Observability) : 완전한 추적 기능을 통해 프로그램의 실행을 쉽게 디버그하고 모니터링 가능
왜 Effect 인가?
- 프로그래밍은 어려움
- 라이브러리와 앱을 만들 때 많은 도구를 사용해 복잡성을 관리함
- Effect는 TypeScript 프로그래밍에 대한 새로운 사고방식을 제시함
- Effect 생태계의 도구를 통해 더 나은 애플리케이션과 라이브러리를 구축할 수 있음
- 이를 통해 TypeScript 언어와 타입 시스템을 더 잘 이해하고 프로그램을 더 신뢰성 있고 유지 관리하기 쉽게 만들 수 있음.
Effect 패턴
- 일반적인 TypeScript 코드에서는 함수가 성공하거나 예외를 던질 것이라고 가정함
- 예: divide 함수는 0으로 나누면 예외를 던짐