【完全ガイド】TypeScriptオブジェクト型の理解と活用法

2023.08.05 に更新記事は 4 分で読めます
サムネイル画像

この記事ではTypeScriptのオブジェクト型について解説していきます。
TypeScriptのオブジェクト型定義の理解を深め、実際の開発に活かすことが目指せますよ!

この記事を読むことで得られること 🎁

この章ではこの記事を読むことで得られる具体的な内容についてお話します。

  • TypeScriptの基本的なオブジェクト型定義方法を学ぶ
  • オプショナルなプロパティについて理解する
  • ネストされたオブジェクト型を理解し、適用できるようになる
  • 型エイリアスとインターフェースの違いを把握する

では、まずは基本的なオブジェクト型定義から見ていきましょう!

基本的なオブジェクト型の定義 👀

TypeScriptでのオブジェクト型の定義を紹介します。

type MyObject = {
  name: string,
  age: number
};

上記のコードでは MyObject という型を定義しています。
name は文字列型、age は数値型と指定されていますね。

このようにTypeScriptでは独自のオブジェクト型を作成することができます!

オプショナルなプロパティ 👐

場合によっては、あるプロパティがオブジェクトに存在するかどうか不明なこともありますよね?
その時に役立つのが「オプショナルなプロパティ」です。

さっそくコードを見てみましょう!

type MyObject = {
  name: string,
  age: number,
  hobby?: string
};

今度の MyObject には hobby という新しいプロパティが追加されました。

しかし、プロパティ名の後ろに ? があることに気づきましたか?
これがオプショナルなプロパティで、このオブジェクトには hobby がなくても良いということを示しています。

ネストされたオブジェクト型 🏘️

オブジェクトの中にさらにオブジェクトが存在する場合、ネストされたオブジェクト型 と呼びます。
こうした複雑な型もTypeScriptでは簡単に扱うことができます。

具体的なコードを見てみましょう。

type MyObject = {
  name: string,
  age: number,
  address: {
    city: string,
    zip: string
  }
};

address プロパティの値はさらにオブジェクトとして cityzip を持っています。
これがネストされたオブジェクト型の一例です!

型エイリアスとインターフェース 🎭

TypeScriptではオブジェクト型を定義する際にtypeとinterfaceのどちらを使用するか選択することができます。

基本的にはどちらも同じ役割を果たしますが、それぞれに一部特性が存在します。
その違いを理解するためのコードを見てみましょう。

type TypeName = {
  name: string
};

interface InterfaceName {
  name: string
};

どちらも name プロパティを持つオブジェクト型を定義していますが、interfaceは拡張が可能な点で特徴があります。

interface InterfaceName {
  age: number
};

このように同じ名前で再定義すると InterfaceNamenameage の両方のプロパティを持つように拡張されます。
この特性はinterfaceにしかないので、オブジェクト型の拡張が必要な場合はこちらを選びましょう!

以上で、TypeScriptのオブジェクト型についての基本的な説明は終わりです。
ここまで読んでいただきありがとうございました!

プロフィールアイコン

Syuu

フロントエンドが好きなWEBエンジニア Next.js / React / TypeScript

SHARE