TypeScript インターフェースの紹介

TypeScript インターフェースの紹介

序文:

TS の基本原則の 1 つは、構造の型チェックを行うことです。インターフェイスの目的は、これらの型に名前を付け、コードまたはサードパーティのコードのコントラクトを定義することです。

最終的にJavaScriptコードにコンパイルされるコードには、インターフェースと型制約は含まれません。

1. インターフェース定義

インターフェースの役割はtypeキーワードに似ていますが、異なります。型は次のコードのように単純なデータ型を定義できます。

タイプ str = 文字列


この記述方法は、関数型、クラス型、配列型のみを記述できるインターフェースには適用できません。

interfaceキーワードは、TS でインターフェースを定義するために使用されます。

サンプルコードは次のとおりです。

// シンプルなインターフェースを定義する interface Person {
  名前: 文字列
}
//getメソッドを定義する function getPersonName(person: Person): void {
  console.log(人.名前)
}
// setメソッドを定義する function setPersonName(person: Person, name: string): void {
  person.name = 名前
}
// personオブジェクトを定義する let person = {
  名前: 「お粥一杯」
}
setPersonName(人、'イーワン・ゾウ')
// 変更成功 getPersonName(person) // Yiwan Zhou

Personインターフェースは、インターフェースを使用するための要件を記述するために使用される名前のようなものです。たとえば、このインターフェースにはname属性が必要であり、その型は文字列です。

型チェックではプロパティの順序はチェックされず、対応するプロパティが存在し、同じ型であることのみが要求されることに注意してください。

2. 属性

2.1 オプション属性

インターフェース内のプロパティがオプションであるか、特定の条件下でのみ存在する場合は、プロパティ名の横に ? 記号を追加できます。サンプルコードは次のとおりです。

;(関数 () {
  // シンプルなインターフェースを定義する interface Person {
    名前: 文字列
    // 年齢はオプションであることを示します age?: number
  }
  // personオブジェクトを定義する let person = {
    名前:「周の一杯」
    年齢: 18歳
    趣味:「コーディング」
  }
  //getメソッドを定義する function getPersonName(person: Person): void {
    // console.log(person.age, person.hobby) // プロパティ 'hobby' はタイプ 'Person' に存在しません。
  }
})()

この時点では、 sex属性を記述しても記述しなくてもかまいませんが、 hobb属性はインターフェースで定義されていないため、呼び出すと例外がスローされます。

2.2 読み取り専用プロパティ

プロパティを読み取り専用プロパティにしたい場合は、プロパティの前にreadonly追加するだけです。

サンプルコードは次のとおりです。

;(関数 () {
  インターフェース Person {
    // 名前を読み取り専用に設定する readonly name: 文字列
  }
  // personオブジェクトを定義する let person = {
    名前:「周の一杯」
  }
  // setメソッドを定義する function setPersonName(person: Person, name: string): void {
    person.name = name // 'name' は読み取り専用プロパティであるため、割り当てることはできません。
  }
  setPersonName(人、'お粥一杯')
})()

3. クラスタイプ

3.1 継承インターフェース

クラスと同様に、インターフェースも相互に継承できます。 これにより、あるインターフェースから別のインターフェースにメンバーをコピーできるようになり、インターフェースを再利用可能なモジュールに分割する際の柔軟性が向上します。

インターフェースの継承では extends キーワードを使用します。サンプル コードは次のとおりです。

// 2つのインターフェースを定義する interface PersonName {
  名前: 文字列
}
インターフェース PersonAge {
  年齢: 番号
}

// 上記の 2 つのインターフェースを継承する Person インターフェースを定義します。複数のインターフェースを使用する場合は、カンマで区切ります。interface Person extends PersonName, PersonAge {
  趣味: 弦楽器
  // 戻り値が文字列であるメソッドを定義する
  say(): 文字列
}
人 = {
  名前:「周の一杯」
  年齢: 18歳
  趣味:「コーディング」
  // サンプルメソッド say() {
    「一碗の周」を返す
  },
}
//getメソッドを定義する function getPersonName(person: Person): void {
  console.log(人名、年齢、趣味)
}
getPersonName(person) // Yiwan Zhou 18 コーディング

複数のインターフェースを継承する場合に、カンマで区切って使用します。

4. 関数の種類

TS では、インターフェースは関数型のインターフェースも記述できます。

関数型インターフェースの定義は、パラメータ リストと戻り値の型のみを持つ関数定義に似ています。パラメータ リスト内の各パラメータには、名前と型が必要です。

サンプルコードは次のとおりです。

インターフェースMyAdd{
    (x: 数値、y: 数値): 数値
}


定義が完了すると、この関数インターフェースを通常のインターフェースのように使用できるようになります。

サンプルコードは次のとおりです。

myAdd: MyAdd = (x: 数値, y: 数値): 数値 => {
    x + yを返す
}


上記のコードは、次の関数定義と同等です。

myAdd: (x: 数値、y: 数値) => 数値 = (
    x: 数値、
    y: 数値
): 数値 => {
    x + yを返す
}

TypeScriptインターフェースに関するこの記事はこれで終わりです。TypeScript インターフェースに関するその他の関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • TypeScript のジェネリック使用法とジェネリックインターフェースの組み合わせ
  • TypeScript 入門 - インターフェース
  • TypeScriptのインターフェースの詳細な説明
  • TypeScript ジェネリックを簡単に説明する方法
  • TypeScript ジェネリックパラメータのデフォルト型と新しい厳密なコンパイルオプション
  • フロントエンドにおけるTypescriptの一般的な概念の深い理解
  • TypeScript のインターフェースとジェネリックを理解していますか?

<<:  CSS の :focus-within の楽しさについて簡単に説明します

>>:  CSS--overflow:hidden のプロジェクト例

推薦する

MySQL プロセス制御 IF()、IFNULL()、NULLIF()、ISNULL() 関数

MySQL では、IF()、IFNULL()、NULLIF()、および ISNULL() 関数を使用...

純粋な CSS 実装 (スクリプトなし) HTML コマンド スタイルのツールチップ テキスト プロンプト効果

実行プロセスを分析します。マウスをノードに移動して、ノードにツールチップ実装を開くための識別子 (...

JavaScriptのクローン作成についての簡単な説明

目次1. 浅いクローニング2. ディープクローニング1. 浅いクローニング浅いクローンでは配列やオブ...

VirtualBox は CentOS7 仮想マシンと拡張ツールをインストールします (画像とテキスト)

コンピュータシステム: win7この記事は主に写真に基づいており、多くの写真が含まれていますCent...

クラウドサーバーを購入し、Alibaba Cloud に Pagoda Panel をインストールする手順

アリババクラウドがサーバーを購入クラウドサーバーを購入し、サーバーバージョンとしてcentos 7....

jsドラッグ効果の原理と実装

ドラッグ機能は主に、ドラッグによる並べ替え、ポップアップ ボックスのドラッグと移動など、ユーザーがカ...

Linux パーティションまたは論理ボリュームにファイルシステムを作成する方法

序文システムにファイル システムを作成し、それを永続的または非永続的にマウントする方法を学習します。...

どのような種類の MYSQL 接続クエリを知っていますか?

序文クエリ情報が複数のテーブルから取得される場合、クエリのためにこれらのテーブルを結合する必要があり...

vueはel-tableの列幅の適応を完璧に実現します

目次背景技術的ソリューション具体的な実装要約する背景Element UI は、PC で人気の Vue...

CSS シャドウアニメーションの最適化のヒント

このテクニックは、この記事から来ています - シルキーでスムーズなパフォーマンスでボックスシャドウを...

Dockerのプロセスとイメージを実行するための基本コマンドの詳細な説明

目次1. ワークフローを実行する2. ミラーリングの基本コマンド1. ワークフローを実行するDock...

React-Native スクリーンショットコンポーネント react-native-view-shot の紹介と使い方のまとめ

目次1. 現象2. 解決策3. 要約: 1. 現象1. 要件: 特定の表示ページをキャプチャしてアル...

Node.js における非同期プログラミングの知識ポイントの詳細な説明

導入JavaScript はデフォルトでシングルスレッドであるため、コードは並列実行するための新しい...

HTMLタグを閉じるのを忘れないでください

Web 標準に準拠した Web ページの構築は、jb51.net が常に全員と議論しているトピックで...

W3C チュートリアル (10): W3C XQuery アクティビティ

XQuery は、XML ドキュメントからデータを抽出するための言語です。 XQuery は、XML...