주말 중에 이거 대충 다듬고 영작해서 dev.to 커뮤니티 올릴 생각인데
미리 초안? 공유해본다
-------------------------------
https://github.com/woutervh-/typescript-is/pull/136
Good bye typescript-is
Typia의 선배 격 라이브러리 typescript-is가 deprecated 되고 typia로 통합되었습니다.
저는 NestJS 백엔드 서버를 개발할 때, class-validator 대신 typescript-is 를 사용했었습니다. DTO를 정의하는데 복잡한 디코레이터 함수를 덕지덕지 바르고 4 중의 중복 타입을 정의해야만하는 class-validator에 비해, typescript-is는 순수 TS 타입에 단 한 줄의 코드만 붙이면 되었기 때문입니다.
- assertType<T>(input)
- Pure TypeScript Type: https://typia.io/docs/pure/
어디서 많이 본 것 같은 스토리인데 싶다면, 네 맞습니다, 제가 자주 소개하던 typia의 스토리와 정확히 일치합니다. typescript-is는 typia와 동일한 용법으로 validation을 수행하는데, 실은 typia보다 몇 년 일찍 출시하였던 라이브러리입니다. 다만, TypeScript는 4.5에서 5.0으로 버전이 오르는 동안, 모든 마이너 패치마다 컴파일러 API에 break change가 생겨났습니다. 그리고 이를 적시에 대응하지 못하면서 typescript-is는 2 년 전을 기점으로 사용 불가능하게 된 라이브러리입니다.
당시 저는 nestia라는 라이브러리를 만들었었고, SDK + swagger 생성 및 JSON 최적화는 typescript-json으로, runtime validation 최적화는 typescript-is를 통해 할 요량이었습니다. 그런데 돌연 typescript-is가 TS의 무자비한 break change 공세에 삼도천을 건너버리자, typescript-json에 typescript-is와 동일한 인터페이스의 validator를 추가하고, 그 이름을 typia로 바꾸면서 오늘에 이르게 된 것입니다.
그리고 오늘 (typescript-is가 삼도천을 건넌지 2년째), typescript-is 개발자님께 typia로의 통합을 권유하였고, typescript-is 개발자님께서 이를 흔쾌히 허락해주셨습니다. 앞으로 TypeScript 진영에서 사용자의 소스 코드를 분석하여 최적의 runtime validation을 해 주는 라이브러리는 typia만이 유일합니다.
typescript-is 개발자님 고생하셨습니다.
-----------------
실은 typescript-is 코드를 뜯어보면서 알게 된 것인데, typescript-is는 TS 데이터 타입에 대한 자료구조 설계와 코어 로직 구현이 결여되어있습니다. 타입스크립트 컴파일러 API의 break change에 유독 취약했던 이유도 여기 있었고, typescript-is의 고질적인 stack overflow 에러 및 잘못된 validation 결과값 도출 등도 이에 기인합니다.
특히 잘못된 validation 결과 도출은 현재 typia 를 제외한 TS 진영의 모든 runtime validator 들이 공통적으로 가진 문제이기도 하며, NestJS 의 class-validator 또한 이 문제를 심각하게 겪고 있습니다. Typia를 개발하면서 테스트 함수를 구현하다보니, 약 1만 여 테스트 케이스에 총 100만 줄 정도의 테스트 코드가 필요했는데, typescript-is는 이 테스트 케이스가 50개, 그리고 class-validator는 16개에 지나지 않습니다.
Typia는 가장 나중에 나온 validator 라이브러리인만큼, typescript-is와 class-validator의 문제점들을 (코어 설계 부재 + 테스트 함수 미비) 사전 조사하고 이를 반면교사 삼아서 제작하였기에, 위 문제들로부터 자유로울 수 있었습니다. 그리고 typescript-is 를 위한 변명을 하자면, 그래도 typescript-is 가 출시할 당시에는, 가장 정확한 validation 결과값을 도출해주는 라이브러리였으며, 현재에도 typia와 함께 가장 사용하기 쉽고 생산성이 높은 라이브러리입니다.
해당 댓글은 삭제되었습니다.
나도 보고싶음
개발그자체
개멋지다
근데 저사람 2년동안 잠수였는데 pr남기면 이메일 오기라도 하는건가? 어떻게 연락받은거임,,,,,>
난 깃허브 계정없는 2004년이 마지막이었던 코드도 패치하고 이메일로 연락해서 되살린적 있음ㅋㅋ
ㅇㅇ pr 남기고 당사자 태그 걸면 메일 감
아 내가 보냈다!
깃갤 최대아웃풋
대단함ㅋㅋㅋ 기부금 많이들어옴? 궁금
월 20딸라 들어옴
와 진짜 이런 대단한 프로젝트에도 기부금들은 짜구나
https://dev.to/samchon/good-bye-typescript-is-ancestor-of-typia-20000x-faster-validator-49fi
영작 완료했다, 위 글 컨텐츠 영어로 바꿔쓴거임 ㅇㅇ
문법 검사기 안 돌림?