TIL-2024/08/26

박상우·2024년 8월 25일
0
post-thumbnail

Pick Type

기존 타입 중 원하는 속성이나 타입을 골라 선언할 수 있다.

/**
 * From T, pick a set of properties whose keys are in the union K
 */
type Pick<T, K extends keyof T> = {
    [P in K]: T[P];
};
type Props = {
	title: string,
	color: string,
	isFull: boolean,
}

type StyledPrps = Pick<Props, 'color' | 'isFull' >

중복된 타입을 선언하지 않아도 되고, 참조한 타입이 수정되었을 때도 수정된 타입으로 반영되기 때문에 관리 포인트가 줄어든다.

Exclude Type

유니언 타입에서 특정 타입을 제외하는 유틸리티 타입이다.

/**
 * Exclude from T those types that are assignable to U
 */
type Exclude<T, U> = T extends U ? never : T;
// 유니언 타입
type Color = 'red' | 'blue' | 'green';

// 'error' 타입을 제외한 새로운 타입 생성
type RedOrBlue = Exclude<Color, 'green'>;

Omit Type

Omit은 기존 타입에서 일부 속성을 제외한 새로운 타입을 생성하기 위해 사용한다.

/**
 * Construct a type with the properties of T except for those in type K.
 */
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;
interface LoginInfo {
  id: number;
  name: string;
  email: string;
  password: string;
}

// password 속성을 제외한 User 타입을 정의
type UserInfo = Omit<LoginInfo, 'password'>;

profile
나도 잘하고 싶다..!

0개의 댓글