일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 오블완
- database/sql
- 구조체
- Kubernetes
- 통합 로깅 시스템
- elasticsearch
- RDS
- goland
- MSA
- AI
- Infra
- AWS
- context7
- GoF
- Intellij
- typescript
- replication lag
- javascript
- GIT
- 디자인패턴
- 관측 가능성
- blank import
- sqs fifo queue
- logging
- go
- 티스토리챌린지
- golang
- go-sql-driver
- 캡슐화
- esbuild
Archives
- Today
- Total
Fall in IT.
Typescript Partial, Required, Pick 사용방법 본문
반응형
interface IPerson
{
name: string;
age: number;
gender: string;
}
/**
* 인터페이스의 모든 프로퍼티를 optional하게 변경한다.
*/
type PartialPerson = Partial<IPerson>;
const partialPerson: PartialPerson =
{
gender: "male" // optional
}
/**
* 인터페이스의 모든 프로퍼티를 required하게 변경한다.
*/
type RequiredPerson = Required<PartialPerson>;
const requiredPerson: RequiredPerson =
{
name: "Jade", // required
age: 29, // required
gender: "male" // required
}
/**
* 인터페이스의 프로퍼티중 일부(name, age)만 받도록 설정한다.
*/
type PickPerson = Pick<IPerson, "name" | "age">;
const pickPerson: PickPerson =
{
name: "Jade", // required
age: 29, // required
// gender: "male" --> (X)
}
/**
* 인터페이스의 프로퍼티중 일부(name,age)는 required
* gender는 optional로 받도록 설정한다.
*/
type PickPerson2 = Pick<IPerson, "name" | "age"> & Pick<Partial<IPerson>, "gender">;
const pickPerson2: PickPerson2 =
{
name: "Jade", // required
age: 29, // required
gender: "male" // optional
}
- 특정 속성만 제거하는 방법
interface IPerson
{
name: string;
age: number;
gender: string;
}
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
type SubPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
type MyPerson = SubPartial<IPerson, "gender">;
let p: MyPerson;
반응형
'프로그래밍언어 > Javascript & Typescript' 카테고리의 다른 글
window.opener 알아보기 (0) | 2018.11.29 |
---|---|
Javascript every 메소드 사용하기 (1) | 2018.11.21 |
Typescript Generic이란? (1) | 2018.08.30 |
자바스크립트 명시적 바인딩 사용하기(call, apply, bind) (0) | 2018.07.21 |
자바스크립트 메모이제이션(memoization) 사용하기 (0) | 2018.07.10 |
Comments