TSで最も一般的な宣言マージ(インターフェースマージ)

TSで最も一般的な宣言マージ(インターフェースマージ)

序文:

今日お話ししたいのは、やはりTSに関連したものです。TSで最も一般的な宣言のマージは、インターフェースのマージです。

インターフェースのマージについて話す前に、宣言のマージについて話しましょう

宣言のマージ:

宣言のマージとは何ですか?

実際、TS での宣言のマージは、コンパイラが同じ名前の宣言を 1 つの宣言にマージすることを意味することは簡単に理解できます。

合併の結果:

結合された宣言は、2 つ以上の元の宣言の特性を持ちます。

疑い:
では、これら 2 つ以上は具体的に何を指しているのでしょうか?

実際には、話すべき状況はいくつかあります。今日はそのうちの 1 つについてお話します。宣言のマージの最も単純で最も一般的なタイプは、インターフェースのマージです。

1. マージインターフェース

「統合された宣言は、2つ以上の元の宣言の特徴を持つ」と述べました。

同じことはインターフェースのマージにも当てはまり、両方のパーティのメンバーが同じ名前のインターフェースに配置されます。

インターフェース内のメンバーには関数メンバーと非関数メンバーが含まれており、状況が異なることに注意する必要がある。

1.1 非関数メンバー

例えば:

インターフェースボックス{
    高さ: 数値;
}

インターフェースボックス{
    幅: 数値;
}

box: Box = {高さ: 2、幅: 3}とします。


上記のコードでは、同じ名前Boxを持つ 2 つのインターフェースが定義されています (実際の開発では、これらは異なるファイルから取得される場合があります)。最終的には、その内容が混在することになります。

ただし、上記の場合のメンバーは一意であることに注意してください。ただし、2 つのインターフェースが同じ名前の非関数メンバーを宣言し、その型が異なる場合、コンパイラはエラーを報告します。

1.2 関数メンバー

内部の関数メンバーについては、同じ名前を持つ各関数宣言がこの関数のオーバーロードとして扱われます。そして、インターフェースAが後のインターフェースAと統合されると、後のインターフェースの方が優先度が高くなります。

たとえば、公式の例:

インターフェースクローナー{
    クローン(動物: 動物): 動物;
}

インターフェースクローナー{
    クローン(動物: 羊): 羊;
}

インターフェースクローナー{
    クローン(動物: 犬): 犬;
    クローン(動物: 猫): 猫;
}


最終的には、次のように 1 つのステートメントにまとめられます。

インターフェースクローナー{
    クローン(動物: 犬): 犬;
    クローン(動物: 猫): 猫;
    クローン(動物: 羊): 羊;
    クローン(動物: 動物): 動物;
}


注意すべき点が 2 つあります。

  • 各インターフェースグループ内の宣言順序は変更されません。
  • インターフェースのグループ間の順序は、後のインターフェースオーバーロードが最初の位置に表示されることです。

ただし、特別な関数シグネチャが表示される場合は例外です。 シグネチャ内のパラメータの型が単一の文字列リテラル(つまり、文字列リテラルの結合ではない)である場合、そのパラメータはオーバーロード リストの先頭に昇格されます。

TS で最も一般的な宣言のマージ (インターフェースのマージ) に関するこの記事はこれで終わりです。TS でのインターフェースのマージについてさらに詳しく知りたい場合は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  HTML のボタン タグをクリックしてページにジャンプする 3 つの方法

>>:  DockerはMysql、.Net6、Sqlserverなどのコンテナをデプロイします

推薦する

ディスクを破壊せずに Linux で dd コマンドを使用する方法

故障したストレージ ドライブからデータを救出する場合でも、アーカイブをリモート ストレージにバックア...

MySQL で大文字と小文字を区別しないように設定する方法

mysql は大文字と小文字を区別しないように設定されていますウィンドウズmysqlがインストールさ...

DockerにTensorFlow環境を素早くインストールする方法

Docker に TensorFlow 環境をすばやくインストールし、TensorFlow を使用し...

HTMLのリストタグを数える

1. <dl>はリストを定義し、<dt>はリスト内の項目を定義し、<d...

CSS変数を使用してスタイルを変更する方法の例

質問js を使用して CSS 疑似クラス スタイルを変更するにはどうすればよいでしょうか?しかし、j...

Node.js のイベント モジュールに関する知識ポイントのまとめ

Node の研究と応用を通じて、NodeJS はシングルスレッド、イベント駆動型、非ブロッキング I...

コードを通じてHTMLエスケープ文字を識別する方法について説明します

データ内に次のような特徴を持つ「 ' 」などの文字が含まれることがあります。 &# ...

CSS ラベルモード表示プロパティの詳細な説明

コードは次のようになります。 <!DOCTYPE html> <html> ...

CentOS の起動時に RabbitMq ソフトウェアを自動的に起動する方法

1. /etc/init.dディレクトリに新しいrabbitmqを作成します。 [root@loca...

uni-appのスタイルの詳細な説明

目次uni-app のスタイル要約するuni-app のスタイルsassプラグインは公式ウェブサイト...

Dockerの動作モードと原理の詳細な説明

次の図に示すように: 仮想マシンと Docker を使用するとき、「なぜ Docker は VM よ...

Nginx Rewrite の使用シナリオと設定方法の分析

Nginx Rewriteの使用シナリオ1. URL アドレスジャンプ。たとえば、ユーザーが pm....

Tomcat が設定ファイルを外部に配置するためのソリューション

質問通常の開発では、プロジェクトを Tomcat にデプロイする場合、プロジェクトを war パッケ...

MySQLからデータをインポートする際の不正なフォーマット、インポートの遅延、データ損失などの問題を迅速に解決します。

遅い問題を完全に解決したい場合は、MySQL を MySQL 8.0 にアップグレードすることをお勧...

シンプルなタブバー切り替えケースを実現するJavaScript

この記事では、タブバーの切り替え効果を簡単に実現するためのJavaScriptの具体的なコードを参考...