effect-ts 를 사용해보면서 느낀 장점 중 하나는... (단점이 아직 좀 더 많습니다... 3.x 인데도 코어 라이브러리 호출에 예외가 터지는 경험을 함.) async 에 대한 확인 작업이다. 이게 비동기인지 아닌지 걱정하지 않고 코드를 쓰게 된다.

내가 접근 가능한 언어 중 lua 나 ruby 또는 go 를 제대로 쓴적이 없어서 색다른 경험이긴 해. function color 구분하지 않고 호출하는 장점이 이런 느낌이구나.

예를 들면;

 const rotationUnit = unit || (yield* getCurrentLogRotationUnit());

물론 상위 함수가 effect 를 위해 제너레이터로 감싸져 있긴 하지만 이 부분은 여러 번 보고 쓰다 보니 익숙해 지더라. callback 함수 강제로 써야하던가 반대로 더이상 안쓰게 되던 경험과 비슷비슷함.

그리고 예외 처리 안하고 모두 값으로 wrapping 하는 것은 여러모로 바람직하다. 다른 플랫폼 기능 안쓰더라도 부분부분 option 이나 result 같은 것만 써도 더 나은 코드를 작성하는데 도움이 된다. 4.0 에는 좀 더 경량화 된다고 하니 업데이트 안되는 패키지 - eg. neverthrow 등 - 쓰는 것보다 그냥 effect-ts 의 에러 관리 기능만 적용해도 좋겠다.

throw 는 아무리 봐도 모던 goto 여...

1

If you have a fediverse account, you can reply to this note from your own instance. Search https://hackers.pub/ap/notes/019965b7-6e19-7eef-8d3d-4a11a2c4289d on your instance and reply to it.