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,
}
*/
'Web development > Node.js & Typescript' 카테고리의 다른 글
[Javascript] 객체 수정시 원본이 변경되는 문제(얕은 복사와 깊은 복사) (0) | 2021.05.06 |
---|---|
[Typescript] 유틸리티 타입 - Parameters, ReturnType, Required (0) | 2020.08.01 |
[Typscript] 유틸리티 타입 - Partial, Readonly, Record (0) | 2020.07.21 |
var vs let vs const (0) | 2020.07.19 |
[Typescript] 제네릭(Generic)을 사용하는 이유 (0) | 2020.07.10 |
댓글