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などのコンテナをデプロイします

推薦する

HTML&CSS&JS 互換性ツリー (IE、Firefox、Chrome)

Web デザインにおけるツリーとは何ですか?簡単に言うと、リンクをクリックするとサブディレクトリが展...

MySQL関連のツールをいくつかお勧めします

序文:インターネット技術の継続的な発展に伴い、MySQL 関連のエコシステムはますます充実し、ますま...

CSSを使用して複数の画像を中央に水平に表示する方法

まず実装手順について説明します。最終結果 2. コードの実装HTML部分 <div class...

表には表示したい境界コードが表示されます

テーブルの共通プロパティ基本的な属性は、width (幅)、height (高さ)、border (...

Vue での keepAlive の使用例の詳細な説明

開発においては、一覧から詳細ページにジャンプし、また詳細ページに戻る際に一覧ページの状態(スクロール...

MySQL の current_timestamp の落とし穴とその解決策を共有する

目次MySQL の current_timestamp の落とし穴エラーを報告する私の解決策mysq...

MySQL 5.7 以降のバージョンのダウンロードとインストールのグラフィック チュートリアル

1. ダウンロード1. MySQL公式サイトのダウンロードアドレス: https://downloa...

Linuxの相対パスと絶対パスの使用

01. 概要絶対パスと相対パスはシェル環境でよく使用され、それぞれに独自の用途があります。相対パスの...

CSS: 訪問した疑似クラスセレクタの秘密の記憶

昨日、a:visited を使用して「Guess You Like」の右側にある訪問済みテキストの色...

VueはEChartsを使用して折れ線グラフと円グラフを実装します

バックエンド管理プロジェクトを開発する場合、バックエンドのユーザーデータをカウントし、折れ線グラフや...

MySQL InnoDB アーキテクチャの概要

目次導入1. MySQLデータベースの全体的なアーキテクチャSQL インターフェースパーサーオプティ...

MySQLのスロークエリの詳細な説明

MySQL操作情報のクエリ show status -- すべての MySQL 操作情報を表示します...

フロントエンド開発者に何百万ドルもの価値をもたらす 10 のスキル

フロントエンド開発者が習得する必要のあるスキル。これらのスキルにより、フロントエンド開発者の価値は数...

Vueはローカルストレージの追加、削除、変更機能を実装します

この記事では、ローカルストレージの追加、削除、変更を実装するためのVueの具体的なコードを例として紹...

Docker と Intellij IDEA の融合により、Java 開発の生産性が 10 倍向上

目次1. 開発前の準備2. 新しいプロジェクトIdea は Java 開発のための強力なツールであり...