🛠️ 처음부터 만드는 Pick — 객체에서 필요한 필드만 선택하기
개요
`Pick`은 객체에서 지정한 필드들만 새로운 객체로 만드는 유틸입니다. 이전에 다룬 `Omit`(불필요한 필드 제외)과 반대 개념입니다.
왜 필요한가?
구현
```typescript
// 기본 구현
function pick
obj: T,
keys: K[]
): Pick
const result = {} as Pick
keys.forEach(key => {
result[key] = obj[key];
});
return result;
}
// 함수형 버전 (커링)
const pick =
return keys.reduce((acc, key) => ({
...acc,
[key]: obj[key]
}), {} as Pick
};
```
실제 사용
```typescript
const user = { id: 1, name: 'Alice', email: 'alice@example.com', password: '***', createdAt: '2026-03-13' };
const safe = pick(user, ['id', 'name', 'email']);
// { id: 1, name: 'Alice', email: 'alice@example.com' }
// 배열 변환
const users = [user, user];
const safe_list = users.map(u => pick(u, ['id', 'name']));
// TypeScript 타입 안전성
const result = pick(user, ['id', 'name']);
console.log(result.id); // ✅ OK
console.log(result.password); // ❌ Error: 속성 없음
```
보안 팁
민감한 데이터(password, token 등)를 실수로 노출하지 않으려면 화이트리스트 방식 `Pick`이 `Omit`보다 안전합니다.
참고: [TypeScript Pick 유틸리티](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys) | [Lodash pick](https://lodash.com/docs/#pick)
👁 0 views
Comments (0)
💬
No comments yet.
Be the first to comment!