3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

これはなに

すでに存在している型を参照して、新規に作成したコンポーネントの型を指定したい場面がありました。
この記事はそのときに使ったTypescript の Utility Types の PickOmit の基礎知識と違いをまとめました。

どちらも参照元の方から、利用したいプロパティを抽出するときに使います。

準備

Todo というオブジェクトを参照する想定にします。

interface Todo {
  title: string;
  description: string;
  completed: boolean;
  date: number;
  people: string;
}

Pick

概要

Pick は参照元の型から、利用したいプロパティを選択して形を構築します。
Typescript 2.1 でリリースされました。

基本的な書き方

Pick<(参照元の)型名, "利用するプロパティ名" | "利用するプロパティ名">;

前項で作成した Todo から利用したいプロパティを選択します。

type = TodoPreview = Pick<Todo, "title" | "completed">;

状態

下記の型が定義されたことになります。

Type TodoPreview {
  title: string;
  completed: boolean;
}

Omit

概要

OmitPick と逆の働きをします。
参照元の型から、利用しないプロパティを選択して、除外した状態で形を構築します。
Typescript 3.5 でリリースされました。

基本的な書き方

Omit<(参照元の)型名, "利用しないプロパティ名" | "利用しないプロパティ名">;

前項で作成した Todo から除外したいプロパティを選択します。

type = TodoPreview = Pick<Todo, "date" | "people">;

状態

下記の型が定義されたことになります。

Type TodoPreview {
  title: string;
  description: string;
  completed: boolean;
}

まとめ

  • 利用したいプロパティだけで型を作りたいときは Pick
  • 型から利用しないプロパティを除外したいときは Omit

参考

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?