react-router 코드에서 갑자기 등장한 Pick! import에도 없고 대체 이게 뭐지…?
export type Navigator = Pick<History, "go" | "push" | "replace" | "createHref">;
interface NavigationContextObject {
basename: string;
navigator: Navigator;
static: boolean;
}
export const NavigationContext = React.createContext<NavigationContextObject>(
null!
);
엥 대체 Pick이 뭐지…? 검색해보니 타입스크립트의 Utility Type이라고 한다. 나... 아직 타입스크립트를 많이 모르는구나…ㅜㅜ
이번 기회에 모든 유틸리티 타입들을 정리해보자! 아래 제공된 모든 예제는 TypeScript공식 Docs에서 참고하였다!
v2.1
Constructs a type by picking the set of propertiesKeys
(string literal or union of string literals) fromType
전달받은 Type
에서 string literal 혹은 union of string으로 받은 keys
를 뽑아서 타입을 생성한다.
interface Todo {
title: string;
description: string;
completed: boolean;
}
type TodoPreview = Pick<Todo, "title" | "completed">;
const todo: TodoPreview = {
title: "Clean room",
completed: false,
};
예제를 보면 Todo는 title, description, completed를 가지고 있는데 여기서 Pick을 활용해 TodoPreview는 title과 completed만을 가지는 타입으로 지정할 수 있다.
즉, 위 react-router코드에서는 History에서 go, push, replace, createHref만 가져와서 만든 새로운 타입을 Navigator
로 지정한 것이다.