본문 바로가기
Web development/Node.js & Typescript

[Typscript] 유틸리티 타입 - Pick, Omit

by 자몬다 2020. 7. 22.

Pick<T, K>

일부의 속성만 가질 수 있을 때 사용한다는 점에서 Partial과 비슷하지만, 속성을 직접 선택한다는 점이 다르다.

interface Post {
    title: string;
    author: string;
    content: string;
    isHidden: boolean;
}

// 게시글을 작성한다.
const newPost = {
	title: 'hello world',
    author: 'effy',
    content: 'hello',
    isHidden: false,
}

// 제목과 내용만 바꿀 수 있도록 하고 싶다.
function updateOnlyTitleAndContent(post: Post, payload: Pick<Post, 'title' | 'content'>) {
	return {...post, ...payload}
}

updateOnlyTitleAndContent(newPost, {title: '바꾼 제목', content: '바꾼 내용'})
/**
{
	title: '바꾼 제목',
    author: 'effy',
    content: '바꾼 내용',
    isHidden: true,
}
*/

 

 

Omit<T>

특정 프로퍼티를 제외한 타입을 만든다.

interface Post {
    title: string;
    author: string;
    content: string;
    isHidden: boolean;
}

// 게시글을 작성한다.
const newPost = {
	title: 'hello world',
    author: 'effy',
    content: 'hello',
    isHidden: false,
}

// 작성자나 숨김처리 여부는 바꿀 수 없도록 하고 싶다.
function update(post: Post, payload: Omit<Post, 'author' | 'isHidden'>) {
	return {...post, ...payload}
}

update(newPost, {title: '바꾼 제목', content: '바꾼 내용'})
/**
{
	title: '바꾼 제목',
    author: 'effy',
    content: '바꾼 내용',
    isHidden: true,
}
*/

댓글