カテゴリ: TypeScript 更新日: 2026/05/04

TypeScriptでOmitを使って特定プロパティを除外する方法!初心者向け型操作ガイド

TypeScriptで`Omit<T, K>`を使って特定プロパティを除外する方法
TypeScriptで`Omit<T, K>`を使って特定プロパティを除外する方法

先生と生徒の会話形式で理解しよう

生徒

「TypeScriptで、すでにあるデータの型から、特定の項目だけを取り除いた新しい型を作りたいのですが、どうすればいいですか?」

先生

「そんなときは、TypeScriptに標準で用意されている『Omit』という便利な道具を使うのが一番ですよ。」

生徒

「オミット、ですか?何だか難しそうですね。初心者でも使いこなせるでしょうか?」

先生

「大丈夫です!コツさえ掴めば、型を再利用して効率的にプログラミングができるようになります。詳しく解説していきましょう!」

1. TypeScriptの型とは何だろう?

1. TypeScriptの型とは何だろう?
1. TypeScriptの型とは何だろう?

プログラミングを始めたばかりの方にとって、「型」という言葉は少しイメージしにくいかもしれませんね。TypeScriptにおける型とは、データの「設計図」や「付箋」のようなものです。例えば、あるデータが「名前(文字列)」と「年齢(数字)」を持っている、というルールをあらかじめ決めておくのが型の役割です。

パソコンを触ったことがない方でも、料理のレシピを想像してみてください。カレーを作るには「肉」「人参」「じゃがいも」が必要だと決まっていますよね。型も同じで、このデータにはこれが入っているはずだ、という約束事をコンピュータに教えるための仕組みなのです。これにより、間違えて「肉」の代わりに「消しゴム」を入れてしまうようなミスを、プログラムを動かす前に防ぐことができます。

2. Omit(オミット)の基本的な役割

2. Omit(オミット)の基本的な役割
2. Omit(オミット)の基本的な役割

さて、今回の主役である「Omit」についてお話しします。「Omit」という英単語には「除外する」や「省く」という意味があります。TypeScriptにおけるOmitは、すでに作成した「型(設計図)」から、いらない項目を一つ、または複数選んで取り除き、新しい型を作り出すための機能です。

なぜこんな機能が必要なのでしょうか。プログラミングをしていると、「基本のデータ形式は同じだけど、この場面だけはこの項目を表示したくないな」という場面がよく出てきます。そのたびに最初から新しい型を作り直すのは手間ですし、元の型を変更したときに全部修正しなければならなくなり、非常に大変です。Omitを使えば、元の型を活かしつつ、必要な部分だけを削ぎ落とした「使い回し」が可能になります。

3. インターフェース(Interface)と型の定義

3. インターフェース(Interface)と型の定義
3. インターフェース(Interface)と型の定義

Omitを使う前に、まずは元となる型を定義する方法を覚えましょう。TypeScriptでは、データの形を定義するために「interface(インターフェース)」という言葉をよく使います。これは、情報のセットに名前をつけるようなものです。

例えば、あるユーザーの情報を管理する場合、名前、メールアドレス、パスワードといった項目が必要になります。これを一つの型として定義することで、プログラム全体で「これはユーザーの情報ですよ」と共通認識を持つことができるようになります。以下のコードは、基本的なユーザーの型を作成する例です。


interface User {
  id: number;
  name: string;
  email: string;
  password: string;
}

この「User」という設計図には、ID番号、名前、メール、パスワードという四つの情報が含まれています。ここで、画面にユーザー一覧を表示するときに「パスワード」だけは邪魔だな、と感じたとしましょう。そこでOmitの出番です。

4. Omitを使って特定のプロパティを除外する書き方

4. Omitを使って特定のプロパティを除外する書き方
4. Omitを使って特定のプロパティを除外する書き方

いよいよ具体的な書き方を解説します。Omitの構文は非常にシンプルです。基本的には「Omit<元の型, '除外したい項目'>」という形で記述します。山括弧(不等号の記号)の中に、情報を二つ入れるのがルールです。

先ほどのユーザー情報の例で、パスワードだけを除いた「公開用ユーザー情報」という新しい型を作ってみましょう。既存のUser型を書き換えるのではなく、User型をベースにして新しい型を生み出すイメージです。


interface User {
  id: number;
  name: string;
  email: string;
  password: string;
}

// User型からpasswordを除外した新しい型を作成
type PublicUser = Omit<User, 'password'>;

const userInfo: PublicUser = {
  id: 1,
  name: "たろう",
  email: "taro@example.com"
};

console.log(userInfo);

実行結果は以下のようになります。


{ "id": 1, "name": "たろう", "email": "taro@example.com" }

このコードでは、PublicUserという新しい型には「password」という項目が存在しなくなっています。もし間違えて「userInfo.password = "1234"」と書き込もうとしても、TypeScriptが「そんな項目はPublicUserにはありませんよ!」とエラーを出して教えてくれます。これが型の強力なメリットです。

5. 複数のプロパティを一度に除外する方法

5. 複数のプロパティを一度に除外する方法
5. 複数のプロパティを一度に除外する方法

一つだけではなく、複数の項目をまとめて取り除きたい場合もありますよね。例えば、IDとパスワードの両方を除外したいときです。その場合は、除外したい項目を「|(縦棒、バーティカルバー)」という記号で繋いで指定します。この記号は、プログラミングの世界では「または(OR)」という意味でよく使われます。

以下の例では、ブログ記事のデータから、作成日時と更新日時の二つを除外して、編集用の型を作成しています。一度に複数の項目を削ることで、より柔軟にデータを扱うことができます。


interface BlogPost {
  title: string;
  content: string;
  author: string;
  createdAt: string;
  updatedAt: string;
}

// createdAt と updatedAt の両方を除外
type PostEditor = Omit<BlogPost, 'createdAt' | 'updatedAt'>;

const newPost: PostEditor = {
  title: "TypeScript入門",
  content: "型について学びましょう。",
  author: "先生"
};

console.log(newPost);

実行結果は以下の通りです。


{ "title": "TypeScript入門", "content": "型について学びましょう。", "author": "先生" }

このように、縦棒を使って項目を並べるだけで、複数の情報を簡単にカットすることができます。非常に便利ですね。

6. Mapped Types(マップドタイプス)との関係

6. Mapped Types(マップドタイプス)との関係
6. Mapped Types(マップドタイプス)との関係

Omitの仕組みを深く理解するために少しだけ高度な話をすると、これは「Mapped Types(マップドタイプス)」という技術を応用して作られています。Mapped Typesとは、既存の型の項目を一つずつループ(繰り返し処理)して、新しい型を組み立てる仕組みのことです。

初心者のうちは、自分でMapped Typesを組み立てる必要はありません。まずはTypeScriptが提供してくれている「ユーティリティ型」と呼ばれる、便利な完成品(Omitなど)を使いこなすことから始めましょう。内部的には、元の型の中身をチェックして、「もし名前が指定されたものと一致しなければ、新しい型に入れる」という計算をコンピュータが行っているのです。

7. Omitを使うメリットと開発の効率化

7. Omitを使うメリットと開発の効率化
7. Omitを使うメリットと開発の効率化

Omitを使う最大の理由は「修正に強いプログラム」を作るためです。プログラミングの格言に「DRY(Don't Repeat Yourself:同じことを繰り返すな)」というものがあります。同じような型を何度も手動で定義していると、ある日「名前」の項目を「ニックネーム」に変えたいと思ったとき、全ての箇所を直して回らなければなりません。これはミスの元になります。

しかし、Omitを使って「元の型をベースに差分だけを作る」という形にしておけば、大元の型を修正するだけで、それを参照している他の型も自動的に反映されます。これを「保守性が高い」と呼びます。プロのエンジニアは、いかに楽をして、かつ正確にコードを書くかを常に考えており、Omitはそのための必須ツールなのです。

8. Pick(ピック)との使い分け

8. Pick(ピック)との使い分け
8. Pick(ピック)との使い分け

Omitと対照的な機能に「Pick(ピック)」というものがあります。Pickは「指定した項目だけを取り出す」という機能です。項目がたくさんある中から、一つだけ除外したいときは「Omit」が楽ですし、逆にごく一部だけを使いたいときは「Pick」を使うのが楽です。

例えば、100個の項目があるデータから99個使いたいなら「1個をOmit」するのが賢いです。逆に、100個の中から2個だけ使いたいなら「2個をPick」する方が簡単ですよね。状況に合わせてこれらを使い分けることで、より読みやすくスッキリとしたコードを書くことができます。以下のコードは、Pickを使った場合の比較例です。


interface Product {
  id: string;
  name: string;
  price: number;
  description: string;
  stock: number;
}

// priceとstockだけを使いたい場合(Pickを使用)
type InventoryInfo = Pick<Product, 'price' | 'stock'>;

const item: InventoryInfo = {
  price: 1500,
  stock: 10
};

console.log(item);

このように、除外する方が早いか、選ぶ方が早いかで判断するのがコツです。どちらも型の再利用を助けてくれる強力な味方です。

9. 初心者が注意すべきポイント

9. 初心者が注意すべきポイント
9. 初心者が注意すべきポイント

最後に、Omitを使う際に初心者が陥りやすいミスを確認しておきましょう。一番多いのは、除外したい項目の名前を打ち間違えてしまう(タイポ)ことです。TypeScriptは賢いので、存在しない項目をOmitしようとすると警告を出してくれることもありますが、基本的には正確な名前をシングルクォーテーション(')で囲って書くようにしましょう。

また、Omitはあくまで「型」を作るための道具であり、実際の「データ(値)」を削除するものではないという点にも注意が必要です。コードの中で変数の型を制限したとしても、元のデータそのものが魔法のように消えるわけではありません。型はあくまで、プログラムを書く上での「ルール」を定義しているに過ぎないのです。しかし、そのルールがあるおかげで、私たちは安心して複雑なシステムを組み立てていくことができるのです。

カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptの配列から要素を削除する方法(pop, shift, spliceなど)完全ガイド
New2
JavaScript
JavaScriptで配列を作成する方法!リテラル表記とArrayコンストラクタを比較
New3
TypeScript
TypeScriptのUnion型とMapped Typesの活用法!初心者向け解説
New4
JavaScript
JavaScriptのデータ型の違いを表で比較しよう(一覧解説)
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.3
Java&Spring記事人気No3
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptでJSON操作の注意点を徹底解説!初心者でも安全に扱える方法
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptの配列の一部を切り出す(slice, spliceの使い方)
No.6
Java&Spring記事人気No6
TypeScript
TypeScriptで関数の型を再利用!ParametersとReturnTypeの使い方を初心者向けに徹底解説
No.7
Java&Spring記事人気No7
TypeScript
TypeScriptで使える基本の型一覧(string, number, booleanなど)
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptでJSONを文字列に変換する方法を初心者向けに解説!JSON.stringifyの使い方ガイド