# Show GN: DeepStrictTypes: 복잡한 TypeScript 타입을 더욱 쉽게 다루기

> Clean Markdown view of GeekNews topic #19731. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19731](https://news.hada.io/topic?id=19731)
- GeekNews Markdown: [https://news.hada.io/topic/19731.md](https://news.hada.io/topic/19731.md)
- Type: show
- Author: [kakasoo](https://news.hada.io/@kakasoo)
- Published: 2025-03-13T20:30:28+09:00
- Updated: 2025-03-13T20:30:28+09:00
- Original source: [github.com/kakasoo](https://github.com/kakasoo/DeepStrictTypes)
- Points: 11
- Comments: 10

## Summary

DeepStrictTypes는 TypeScript에서 중첩된 객체를 더 안전하고 편리하게 다룰 수 있도록 돕는 유틸리티 타입 모음입니다. `DeepStrictOmit`과 `DeepStrictPick`을 사용하면 중첩된 객체의 특정 속성을 깔끔하게 선택하거나 제외할 수 있습니다. 또한, 실험적으로 `deepStrictObjectKeys`, `deepStrictAssert` 같은 런타임 유틸리티도 추가되었습니다.

## Topic Body

[DeepStrictTypes](https://www.npmjs.com/package/@kakasoo/deep-strict-types)는 중첩된 객체를 더 안전하고 편리하게 다룰 수 있도록 만든 TypeScript 유틸리티 타입 모음이에요.  
  
기존 `Omit`이나 `Pick`을 쓰면 깊숙이 들어간 속성을 깔끔하게 처리하기 어려운데, `DeepStrictOmit`과 `DeepStrictPick`을 사용하면 원하는 부분만 쏙쏙 골라낼 수 있어요.  
  
예를 들면, `{ user: { name: string; age: number } }` 타입에서 `DeepStrictOmit<Example, 'user.name'>`을 쓰면 `{ user: { age: number } }`처럼 정확하게 변형돼요. 반대로 `DeepStrictPick<Example, 'user.name'>`을 쓰면 `{ user: { name: string } }`처럼 필요한 부분만 남길 수도 있고요.  
  
이게 왜 필요하냐면,  
✔️ API 응답에서 특정 필드만 필터링할 때  
✔️ 중첩된 객체에서 원하는 부분만 남기고 싶을 때  
  
실험적으로 `deepStrictObjectKeys`, `deepStrictAssert` 같은 런타임 유틸리티도 추가했어요.  
  
한번 써보고 피드백 주시면 좋겠어요! 오픈소스에 대한 관심은 제작자에게 힘이 됩니다!

## Comments



### Comment 35869

- Author: metis041
- Created: 2025-03-14T10:49:32+09:00
- Points: 1

타입스크립트는 언제나 개추야

### Comment 35871

- Author: kakasoo
- Created: 2025-03-14T10:56:06+09:00
- Points: 1
- Parent comment: 35869
- Depth: 1

타입스크립트의 멋짐을 아는 당신, 감사합니다.

### Comment 35862

- Author: tested
- Created: 2025-03-14T10:10:27+09:00
- Points: 1

https://github.com/sindresorhus/type-fest

### Comment 35864

- Author: kakasoo
- Created: 2025-03-14T10:19:32+09:00
- Points: 1
- Parent comment: 35862
- Depth: 1

감사합니다!

### Comment 35856

- Author: softer
- Created: 2025-03-14T09:50:16+09:00
- Points: 2

따봉추

### Comment 35860

- Author: kakasoo
- Created: 2025-03-14T10:01:13+09:00
- Points: 1
- Parent comment: 35856
- Depth: 1

따봉추 감사합니다

### Comment 35838

- Author: sunrabbit
- Created: 2025-03-13T20:32:08+09:00
- Points: 1

이정도로 타입을 심하게 쓰는 사람이 있을까 싶은데  
실 사용례가 궁금해지네요

### Comment 35839

- Author: kakasoo
- Created: 2025-03-13T20:40:38+09:00
- Points: 1
- Parent comment: 35838
- Depth: 1

저는 광고 도메인에서 일할 때 많이 썼습니다... :)  
Facebook, Google... 어쨌든지 간에 결국 광고 도메인은 약간 씩만 다르고 거의 비슷한 타입들로 추상화할 수 있어서, 서로 다른 서비스를 한 도메인으로 묶을 때 쓰곤 했죠.

### Comment 35878

- Author: wogns3623
- Created: 2025-03-14T11:58:43+09:00
- Points: 1
- Parent comment: 35839
- Depth: 2

서버에서 db 데이터 레코드 타입을 요리조리 가공할 때 저런식으로 자주 사용하는 것 같습니다

### Comment 35880

- Author: kakasoo
- Created: 2025-03-14T13:07:58+09:00
- Points: 1
- Parent comment: 35878
- Depth: 3

맞습니다. 사실 프론트 분들께는 공감을 많이 못얻더라구요.
