インターフェイスではなくタイプを選択する理由

王林
リリース: 2024-08-05 19:03:02
オリジナル
724 人が閲覧しました

Why to Choose Types Instead of Interfaces

TypeScript では、オブジェクトの型を定義するために型とインターフェイスの両方が使用されます。ただし、用途や機能は異なります。どちらも、開発者がコードを記述するときに変数とオブジェクトの型を制限するのに役立ち、それによってエラーが減り、コードの読みやすさが向上します。

では、なぜ型を使うのでしょうか?これについて話し合いましょう。

種類

TypeScript では、型を使用してデータの形状を定義できます。柔軟性があり、結合や交差などの作成に使用できます。

type User = {
  name: string;
  age: number;
};

type Admin = User & {
  isAdmin: boolean;
};
ログイン後にコピー

インターフェース

インターフェイスは、オブジェクトの形状を定義するもう 1 つの方法です。これは型よりも厳密であり、主にオブジェクトの形状とクラス コントラクトを定義するために使用されます。

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

interface Admin extends User {
  isAdmin: boolean;
}
ログイン後にコピー

私がタイプを好む理由

  • ユニオン

共用体タイプでは、複数のタイプのうちの 1 つとなるタイプを定義できます。これは、関数のパラメーターと戻り値の型に便利です。ここで、ID は文字列または数値のいずれかであり、共用体型の威力を示しています。

type ID = string | number;

function getUserId(id: ID): string {
  return `User ID: ${id}`;
}
ログイン後にコピー
  • 文字列リテラル

リテラル型を使用すると、変数が取り得る正確な値を指定できます。これは、定数や構成オプションを定義する場合に非常に役立ちます。

type Direction = 'north' | 'south' | 'east' | 'west';

function move(direction: Direction) {
  console.log(`Moving ${direction}`);
}

move('north');
ログイン後にコピー
  • 条件型

タイプを使用すると、条件付きタイプの作成が可能になり、条件に基づいてタイプを選択できるようになります

type Check<T> = T extends string ? string : number;

let result1: Check<string>; // result1 is of type string
let result2: Check<number>; // result2 is of type number
ログイン後にコピー
  • 交差点

交差タイプを使用すると、複数のタイプを 1 つに結合できます。これは、複雑なタイプの合成を作成する場合に特に便利です。

type Person = {
  name: string;
  age: number;
};

type Employee = {
  employeeId: number;
};

type EmployeeDetails = Person & Employee;

const employee: EmployeeDetails = {
  name: 'Dev',
  age: 30,
  employeeId: 12345,
};
ログイン後にコピー

タイプとインターフェイスのどちらを選択するかは、最終的には特定の使用例と個人的な好みによって決まります。ただし、それぞれの長所を理解すると、より多くの情報に基づいた意思決定を行い、より優れた TypeScript コードを作成するのに役立ちます。

以上がインターフェイスではなくタイプを選択する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!