Jay's Cookbook
Menu
  • Tags
  • Categories
  • Projects
Computer Science
OS
Network
Data Structure
Algorithm
Language
Code Architecture
Python
Javascript
Typescript
Java
Backend
Backend Theory
TypeORM
Node.js
NestJS
FastAPI
Frontend
HTML/CSS
React
Next.js
Data Engineering
DE Theory
MySQL
MongoDB
Elastic
Redis
Kafka
Spark
Airflow
AI
Basic
Pytorch
NLP
Computer Vision
Data Analytics
Statistics
Pandas
Matplotlib
DevOps
Git
Docker
Kubernetes
AWS
[Typescript] 유틸리티 타입
language
typescript

[Typescript] 유틸리티 타입

Jay Kim
Jay Kim 06 Feb 2024
[Typescript] Index signature [Typescript] 데코레이터

Table of Contents

  • Utility Type
  • Partial
  • Pick
  • Omit
  • Record
  • Await

Utility Type

  • 유틸리티 타입은 기존 타입을 변환하여 새로운 타입을 만드는데 유용한 기능을 제공한다

Partial

  • 파셜(Partial) 타입은 기존 타입의 모든 가능한 부분집합을 의미하는 타입이다
  • 기존 타입의 모든 프로퍼티를 옵셔널(optional)로 만든다
type User = {
    name: string
    age: number
    address: string
}

type UpdateUser = Partial<User>


let updateBody: UpdateUser

updateBody = {} // OK
updateBody = { name: 'Kim' } // OK
updateBody = { name: 'Lee', age: 20, address: 'Seoul' } // OK
updateBody = { foo: 'bar' } // Error

Pick

  • 픽(Pick) 타입은 기존 타입의 특정 속성만 명시적으로 골라 정의한 새로운 타입이다
type User = {
    name: string
    age: number
    address: string
}

type UpdateUser = Pick<User, 'age' | 'address'>


let updateBody: UpdateUser

updateBody = {} // Error
updateBody = { name: 'Kim' } // Error
updateBody = { age: 20, address: 'Seoul' } // OK

Omit

  • 오밋(Omit) 타입은 기존 타입의 특정 속성만 명시적으로 제외한 타입이다
type User = {
    name: string
    age: number
    address: string
}

type UpdateUser = Omit<User, 'name'>


let updateBody: UpdateUser

updateBody = {} // Error
updateBody = { name: 'Kim' } // Error
updateBody = { age: 20, address: 'Seoul' } // OK

Record

  • 키와 값의 타입을 정의한 객체를 의미하는 타입이다
const user: Record<string, string> = { name: 'Kim', address: 'Seoul' }
type UserKey = 'name' | 'age' | 'address'
type UserValue = string | number

const user: Record<UserKey, UserValue> = { name: 'Kim', age: 19, address: 'Seoul' }

Await

[Typescript] Index signature [Typescript] 데코레이터

You may also like

See all typescript
06 Feb 2024 [Typescript] 타입 심화편(2): 객체
language
typescript

[Typescript] 타입 심화편(2): 객체

06 Feb 2024 [Typescript] 타입 심화편(1): 함수
language
typescript

[Typescript] 타입 심화편(1): 함수

06 Feb 2024 [Typescript] 데코레이터
language
typescript

[Typescript] 데코레이터

Jay Kim

Jay Kim

Web development, data engineering for human for the Earth. I share posts, free resources and inspiration.

Rest
Lifestyle
Hobby
Hobby
Hobby
Hobby
2025 © Jay's Cookbook. Crafted & Designed by Artem Sheludko.