typescript 3

Typia(이전 명칭: TSON) 사용 후기

삼촌samchon이라는 개발자가 만든 라이브러리를 알게 되었다. 정의된 타입을 기준으로 유효성검사가 끝난다니..! 이전엔 유효성검사를 위해 @IsIn 등의 class-validator 라이브러리 함수로 여기 저기를 장식해야했는데, 조금 더 짧은 코드를 작성할 수 있는 것인가...! 현실과 이상의 차이 삼촌께서는 nestia라는 명칭으로 플러그인과 함께 nestjs를 덮어썼는데, 새로운 장식(데코레이터)을 써야하는 것은 내게 불만이었다. 그런데 기존 코드까지 많은 변경이 필요하다면, 내 기준에선 도입할 이유가 없었다. 왜냐하면 나는 TS에서 디버깅하기 불편한 데코레이터라는 기능을 선호하지 않는데다가, JS는 성능보단 빠른 코드작성을 위해 사용하고 있다. node에서 유효성 검사를 몇 천배 더 빠르게 해봐야..

IT 2022.12.15

[Refactoring 2판]에 대한 내 생각과 비판

이 책의 초판은 2012년 11월이고, 2020년에 2판이 나왔다. 2판은 ES6를 기준으로 작성되어있다. 코드 리팩터링의 기본 원칙에 대해 js로 풀어낸 것이므로, 객체지향 언어라면 대동소이하다. 사실 이 책에 나오는 내용 대부분은 학부 시절에 접할 수 있는 내용들이다. js로 작성되었다고해서 js 특성에 맞는 특별한 리팩터링 방법을 기대한다면 다른 책을 추천한다. 사실 ts가 나온 현 시점에서는 js라는 언어 자체가 리팩터링 대상이기 때문이다. 그냥 js가 대중적이니까 js판 리팩터링책을 만든 느낌이지, 다른 개발자들이 js쓰는 것을 보고 답답함을 느껴서 "야 너희들 js 리팩터링 그렇게 하는 거 아니야!"라는 느낌으로 책을 쓴 게 아니란 얘기다. 나는 사실 이 책의 작성 배경이 후자이길 바랐다. 만..

IT 2022.11.13

스벨트에서 readable만 노출하기(Svelte - writable to readable)

나는 특정 모듈에서 `store`의 `writable`은 이용하되, `readable`인터페이스만 노출하고 싶었다. 데이터 쓰기 인터페이스를 함수나 커맨드 형태(MVVM 패턴)로만 제공할 수 있어야, 프로젝트가 커졌을 때, 문제가 되지 않기 때문이다. # Example - convert `writeable` to `readable` import {writable} from 'svelte/store' // writable의 업데이트 기능은 이 모듈에서만 사용(export하지 않음) const _now = writable(Date.now()) // `export const 변수명 = readable(값)`과 같은 효과 export const now = {subscribe: _now.subscribe} // ..

IT 2022.10.10