TypeScript Interface 入門: 初心者が効率的に開発するための鍵

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

こんにちは!Syuu( @syuu_n18)です。

今回は初心者にもわかりやすいように TypeScript の interface について解説していきます。

それでは、さっそく始めましょう!

はじめに

まずは interface とは何か、どのような役割を果たしているのかを簡単に説明します。

Interface は TypeScript で型を定義する方法のひとつで、オブジェクトの構造を明示的に示すことでコードの可読性や保守性が向上します。

私が実際に interface を使い始めたとき、コードの可読性や保守性が格段に向上しました。

interface とは?

interface は TypeScript の重要な概念であり、オブジェクトが持つべきプロパティやメソッドの型を定義するために使用されます。

interface を使って定義した型は、実装するオブジェクトがその構造に従わなければならないという制約を与えることができます。

例えば以下のような interface を定義できます。

interface Person {
  name: string;
  age: number;
}

このコードは、Person という名前の interface を定義しています。
Person interface は name という文字列型のプロパティと、age という数値型のプロパティを持つことを表しています。

interface のメリット

illust

interface の最大のメリットは コードの可読性保守性の向上 です。
また、他にも以下のようなメリットがあります。

  • コードの 構造を明確 に表現できる
  • 型チェックによって バグを早期に発見 できる
  • エディタの補完機能 を活用できる

これらのメリットにより、開発者がより効率的にコードを書くことができます!

interface の使い方

では実際に interface を使った型定義の方法を紹介します。

まず、以下のように interface を定義します。

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

次にこの interface を使ってオブジェクトの型を指定します。

const product: Product = {
  id: 1,
  name: "りんご",
  price: 100,
}

このように、interface を使って型を定義してオブジェクトを作成することができます。

クラスに interface を実装する方法

最後に、クラスに interface を実装する方法を説明します。

まずは以下のように interface を定義します。

interface Animal {
  name: string;
  sound(): void;
}

次に、この interface を実装するクラスを定義します。

class Dog implements Animal {
  name: string;

  constructor(name: string) {
    this.name = name;
  }

  sound() {
    console.log("ワン! ワン!");
  }
}

const myDog = new Dog("愛犬");
myDog.sound(); // "ワン! ワン!" と出力されます

このコードでは Animal interface を実装した Dog クラスを定義しています。
Dog クラスは name プロパティと sound メソッドを持ち、Animal interface の要件を満たしています。

これでクラスに interface を実装することができました!

まとめ

この記事では TypeScript の interface についての基本を紹介しました!

interface はコードの可読性や保守性を向上させる非常に便利な機能です。

今回の記事で紹介したことは以下のとおりです。

  • interface とは何か
  • interface のメリット
  • interface の使い方
  • クラスに interface を実装する方法

私自身も interface を使用してより効率的に開発が進められています。
これらの知識を活用してより良い TypeScript コードを書いていきましょう!

プロフィールアイコン

Syuu

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

SHARE