「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > TypeScript インターフェイスをマスターする: 実践的な例を含む包括的なガイド

TypeScript インターフェイスをマスターする: 実践的な例を含む包括的なガイド

2024 年 8 月 18 日に公開
ブラウズ:812

Mastering TypeScript Interfaces: A Comprehensive Guide with Practical Examples

TypeScript では、インターフェイスはオブジェクトの形状を定義するために使用される強力なツールです。これらは型チェックを強制し、作成したオブジェクトが特定の構造に準拠していることを確認します。ここでは、インターフェイスが一般的に使用されるさまざまなケースを例とともに見ていきます:

1. オブジェクトの形状を定義する

インターフェイスは、オブジェクトの構造を定義するためによく使用されます。これにより、インターフェイスに付着しているすべてのオブジェクトが特定のプロパティを持つことが保証されます。

interface User {
  name: string;
  age: number;
  email: string;
}

const user: User = {
  name: "John Doe",
  age: 30,
  email: "[email protected]"
};

2. オプションのプロパティ

インターフェイスでは、? を使用してオプションのプロパティを定義できます。シンボル。これは、オブジェクトがこれらのプロパティを持っている場合も持っていない場合もあるということを意味します。

interface Product {
  id: number;
  name: string;
  description?: string; // Optional property
}

const product: Product = {
  id: 1,
  name: "Laptop"
};

3. 読み取り専用プロパティ

プロパティを読み取り専用として定義できます。つまり、初期化後に変更することはできません。

interface Config {
  readonly apiUrl: string;
  timeout: number;
}

const config: Config = {
  apiUrl: "https://api.example.com",
  timeout: 5000
};

// config.apiUrl = "https://newapi.example.com"; // Error: Cannot assign to 'apiUrl' because it is a read-only property.

4. 関数の種類

インターフェイスを使用して関数の形状を定義し、パラメーターの型と戻り値の型を指定できます。

interface Login {
  (username: string, password: string): boolean;
}

const login: Login = (username, password) => {
  return username === "admin" && password === "admin123";
};

console.log(login("admin", "admin123")); // true

5. インターフェースの拡張

インターフェイスは他のインターフェイスを拡張でき、既存のものを組み合わせて複雑なタイプを作成できます。

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

interface Employee extends Person {
  employeeId: number;
  department: string;
}

const employee: Employee = {
  name: "Alice",
  age: 28,
  employeeId: 12345,
  department: "Engineering"
};

6. クラスへのインターフェイスの実装

クラスはインターフェイスを実装でき、インターフェイスの構造に確実に準拠します。

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

class Dog implements Animal {
  name: string;

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

  makeSound() {
    console.log("Woof! Woof!");
  }
}

const dog = new Dog("Buddy");
dog.makeSound(); // Woof! Woof!

7. インデックス可能な型

インターフェイスは、特定のタイプの動的キーを持つプロパティを持つオブジェクトを記述することができます。

interface StringArray {
  [index: number]: string;
}

const myArray: StringArray = ["Hello", "World"];
console.log(myArray[0]); // Hello

8. ハイブリッドタイプ

インターフェイスは、関数として機能するオブジェクトと、プロパティを持つオブジェクトとして機能するオブジェクトを定義できます。

interface Counter {
  (start: number): void;
  interval: number;
  reset(): void;
}

const counter: Counter = (function (start: number) {
  console.log("Counter started at", start);
} as Counter);

counter.interval = 1000;
counter.reset = () => {
  console.log("Counter reset");
};

counter(10);
console.log(counter.interval); // 1000
counter.reset();

9. インターフェースのマージ

TypeScript を使用すると、同じインターフェイスの複数の宣言をマージできます。これは、大規模なコードベースまたはライブラリを操作する場合に便利です。

interface Box {
  height: number;
  width: number;
}

interface Box {
  color: string;
}

const myBox: Box = {
  height: 20,
  width: 15,
  color: "blue"
};

TypeScript のインターフェイスは、オブジェクトの形状を定義および強制するための柔軟かつ強力な方法を提供し、強力な型チェックと明確で保守可能なコードを可能にします。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/shanu001x/mastering-typescript-interfaces-a-comprehensive-guide-with-practical-examples-m8h?1 侵害がある場合は、[email protected] までご連絡ください。それを削除するには
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3