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

推薦する

CSS ポインターイベント属性の使用に関する詳細な説明

フロントエンド開発では、ユーザーと直接やり取りするため、ユーザーが操作がスムーズで快適だと感じ、ネイ...

nginx と openssl で https を実装する方法

サーバーデータがSSL証明書を使用して暗号化および認証されていない場合、ユーザーのデータはプレーンテ...

高品質なコードを書く Web フロントエンド開発実践書の抜粋

(P4) Web 標準は一連の標準で構成されています。中心となる概念は、Web ページの構造、スタイ...

Alibaba Cloud Centos7のインストールとSVNの設定

1. SVNサーバーをインストールする yum でサブバージョンをインストール2. SVNバージョン...

Node.jsで子プロセスを作成する方法

目次導入子プロセスプロセスを非同期的に作成する同期作成プロセス導入Node.js のメイン イベント...

JavaScript イベント委任 (プロキシ) の使用例の詳細

目次導入例: イベントの委任記述方法1: イベント委譲書き方2: 各子要素がイベントをバインドする例...

CSS スタイルの優先順位はどれくらい複雑ですか?

昨晩、面接の質問を見ていたら、CSS スタイルの優先順位について特に明確に説明していない人が何人かい...

etcd クラスターをデプロイするための docker-compose の実装手順

目次docker-compose.ymlを書くdocker-composeを実行するビルドステータス...

MySQLは実際に分散ロックを実装できる

序文前回の記事では、eコマース シナリオでのフラッシュ セールの例を通じて、モノリシック アーキテク...

SQL 実践演習: オンライン モール データベース ユーザー情報データ操作

オンラインショッピングモールデータベース - ユーザー情報データ運用プロジェクトの説明電子商取引の台...

CSS3 オーバーフロープロパティの説明

1. オーバーフローOverflow はオーバーフロー(コンテナ)です。コンテンツがコンテナを越える...

Ubuntu 18.04 で MySQL のインストール時にパスワードが要求されない場合の解決方法

Ubuntu 1804 への MySQL 5.7 のインストールについて詳しく紹介します。 MySQ...

CSSを使用してアダプティブスクエアを実装する方法の例

伝統的な方法は、正方形を固定形式で書くことです。長さ=幅を直接書き、次のように固定値を書きます。 。...

Linux の高性能ネットワーク IO と Reactor モデルの分析

目次1. 基本概念の紹介2. ネットワークIOの読み取りと書き込みのプロセス3. 5つのLinuxネ...

Vue はグラフィック検証コードログインを実装します

この記事では、グラフィック認証コードログインを実装するためのVueの具体的なコードを参考までに紹介し...