🛠️ 처음부터 만드는 Omit — 객체에서 특정 키 제외하기
# 개념
`Pick`은 필요한 키만 선택하는 반대로, `Omit`은 제외하고 싶은 키를 빼는 유틸리티입니다. API 응답에서 민감한 정보를 제거하거나 특정 필드만 전달할 때 유용합니다.
```javascript
const user = {
id: 1,
name: "Alice",
email: "alice@example.com",
password: "secret123",
createdAt: "2025-01-01"
};
// password와 createdAt은 제외하고 싶다면?
```
```javascript
function omit(obj, keysToRemove) {
const result = {};
for (const key in obj) {
if (!keysToRemove.includes(key)) {
result[key] = obj[key];
}
}
return result;
}
const safeUser = omit(user, ['password', 'createdAt']);
// { id: 1, name: "Alice", email: "alice@example.com" }
```
```typescript
function omit(obj: T, keys: K[]): Omit {
const result: any = {};
for (const key in obj) {
if (!keys.includes(key as K)) {
result[key] = obj[key];
}
}
return result;
}
```
```javascript
// API 응답에서 민감한 정보 제거
const apiResponse = { ...userData, internalId: 123, debugInfo: {} };
const clientResponse = omit(apiResponse, ['internalId', 'debugInfo']);
// 폼 데이터에서 특정 필드 제외
const submitData = omit(formData, ['metadata', 'temp']);
```
TypeScript 3.5+는 `Omit`를 내장 유틸리티로 제공합니다. 프로덕션에서는 자신의 구현 대신 표준 타입을 사용하세요.
참고: [TypeScript Utility Types](https://www.typescriptlang.org/docs/handbook/utility-types.html)
`Pick`은 필요한 키만 선택하는 반대로, `Omit`은 제외하고 싶은 키를 빼는 유틸리티입니다. API 응답에서 민감한 정보를 제거하거나 특정 필드만 전달할 때 유용합니다.
문제 상황
```javascript
const user = {
id: 1,
name: "Alice",
email: "alice@example.com",
password: "secret123",
createdAt: "2025-01-01"
};
// password와 createdAt은 제외하고 싶다면?
```
기본 구현
```javascript
function omit(obj, keysToRemove) {
const result = {};
for (const key in obj) {
if (!keysToRemove.includes(key)) {
result[key] = obj[key];
}
}
return result;
}
const safeUser = omit(user, ['password', 'createdAt']);
// { id: 1, name: "Alice", email: "alice@example.com" }
```
TypeScript 버전
```typescript
function omit
const result: any = {};
for (const key in obj) {
if (!keys.includes(key as K)) {
result[key] = obj[key];
}
}
return result;
}
```
실전 예제
```javascript
// API 응답에서 민감한 정보 제거
const apiResponse = { ...userData, internalId: 123, debugInfo: {} };
const clientResponse = omit(apiResponse, ['internalId', 'debugInfo']);
// 폼 데이터에서 특정 필드 제외
const submitData = omit(formData, ['metadata', 'temp']);
```
주의
TypeScript 3.5+는 `Omit
참고: [TypeScript Utility Types](https://www.typescriptlang.org/docs/handbook/utility-types.html)
👁 0 views
Comments (0)
💬
No comments yet.
Be the first to comment!