インターフェースの役割:インターフェース (英語: interface) の機能は、簡単に言えば、コードの規則を提供することです。
例えば: //インターフェースPersonを定義する インターフェース Person { 名前: 文字列; 年齢: 番号; } // 定義された変数 man の型を Person "型" として指定します [この表現は正確ではありませんが、理解を容易にするためです] let man: 人; // この時点で、man に値を割り当てる場合、man は定義した Person 制約に準拠している必要があります。つまり、数値型の age フィールドと文字列型の名前フィールドが存在する必要があります。man = { age: 10, name: 'syw' } # または、次のようにします function fun(women:Person){} // パラメータ women も Person 制約に準拠する必要があります 上記の例では、インターフェースとその機能を定義する方法について簡単に説明しました。ここでは、インターフェースを操作する他の方法について簡単に説明します。 インターフェイスのオプション プロパティを設定します。オプション属性を持つインターフェースは、オプション属性名の定義の後に ? 記号が追加されることを除いて、通常のインターフェース定義と似ています。 インターフェース Person { 名前: 文字列 年齢?: 番号 } オプション属性の最も一般的な使用法は、このパラメータが渡されるか存在するかが不明な場合です。
追加のプロパティ チェック:これについて言えば、簡単にまとめると、属性をオプションとして設定することはできますが、間違った属性を渡すことはできません。
これは追加のプロパティ チェックです。 もちろん、型アサーションを使用してこれらのプロパティチェックを回避することもできます。リンクを参照してください: TypeScript の型アサーション [as 構文 | <> 構文] インターフェイスの読み取り専用属性を設定します。一部のオブジェクト プロパティは、オブジェクトが最初に作成されたときにのみ変更できます。 したがって、属性名の前に readonly を使用して、読み取り専用属性を指定できます。 インターフェース Person { 読み取り専用の名前: 文字列; 読み取り専用 age: 数値; } // 初期値を割り当てる let man: Person = {name: 'syw', age: 10}; // この時点で値を変更するとエラーが発生します。 man.age = 20; // エラー! // 'age' は読み取り専用プロパティであるため、割り当てることはできません。 実際、読み取り専用属性を使用した場合の効果は const と似ています。もちろん、この 2 つはまったく同じものではありません。これは単に理解しやすいように言っているだけです。 Typescript では、readonly と const は次のように記述されます。 関数型インターフェース: 簡単に言えば、関数型のインターフェースは、関数のパラメータ型と関数の戻り値型を指定します。 インターフェース PersonFun { (名前: 文字列、年齢: 数値): ブール値 } // PersonFun制約に従う関数を定義する let manFun: PersonFun = (name: string, age: number) => { 年齢 > 10 を返します。 } 知らせ:
// これも要件を満たしています let manFun: PersonFun = (name12: string, age12: number) => { 年齢 > 10 を返します。 } インデックス可能な型インターフェース:簡単に言えば、インデックス可能な型インターフェースとは、インデックスの型と戻り値の型を指定できることを意味します。
インターフェース PersonArr { [インデックス: 数値]: 文字列 } // 配列を定義します。let manArr: PersonArr = ['syw','syw1','syw2']; // manArr[0]をクエリします。 // このとき、0は数値型のインデックスであり、0番目の要素は文字列型のsywを返します。 Typescript は、実際にはインデックス型である数値と文字列の 2 種類のインデックス署名をサポートしています。 また、数値型インデックスを使用する場合、定義される戻り値の型は、文字列型インデックスに対して定義された戻り値のサブタイプである必要があります。
初めてこの文を見たとき、意味は理解できましたが、それをどうシンプルに表現したらいいのか分かりませんでした。よく調べてみると、それは私がまだこの文に馴染みがないからかもしれないと分かりました。実はとてもシンプルです。 // たとえば、私の PersonArr には 2 つのインデックスがあり、1 つはインデックス (数値) 型で、もう 1 つはアイテム (文字列) 型です。これら 2 つのインデックスの戻り値を定義するときは、上記の内容に厳密に従う必要があります。 // 数値型インデックスを使用する場合、戻り値の型は文字列型インデックスの戻り値のサブタイプである必要があります。 // 以下に定義するインターフェースはエラーを報告します interface PersonArr { [インデックス: 数値]: 文字列; [項目: 文字列]: 数値; } // インデックスの戻り値は文字列型なので、明らかに数値型の項目の戻り値のサブタイプではありません。// 正しく記述するにはどうすればよいでしょうか?最も簡単な方法は、インデックスの戻り値の型を数値に変更することです。 TypeScript インターフェース定義ケースチュートリアルに関するこの記事はこれで終わりです。TypeScript インターフェース定義に関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Linux環境でタイムゾーンを設定できない問題を解決
>>: CentOS に Redis と MySQL をインストールする
序文コア機能のデフォルトの組み込みディレクティブ (v-model および v-show) に加えて...
構造本文、見出し、HTML、タイトル文章abbr、頭字語、アドレス、引用ブロック、br、引用、コード...
序文ご存知のとおり、nginx 構成ファイルは add_header ディレクティブを使用して応答ヘ...
ビュー:一時テーブルを繰り返し使用する場合、将来の使用を容易にするために別名を付けることができます。...
さまざまな理由により、debパッケージ内のさまざまなファイルの内容を直接変更する必要がある場合があり...
目次1. ブロックスコープとは何ですか? 2. ブロックスコープが必要なのはなぜですか? 3. 関数...
監視ホストの追加ホスト 192.168.179.104 が zabbix 監視項目に追加されます (...
正規表現は、特定のパターンに一致するテキストを検索および置換するためによく使用されます。たとえば、テ...
序文今日は、聖杯レイアウトとダブルウィングレイアウト、そしてそれらの違いについてお話しします。この2...
<br />国内のウェブサイトが本格的に普及し、ユーザーエクスペリエンスに重点が置かれる...
<a href="https://www.jb51.net/" title...
序文JavaScript では、これは関数呼び出しコンテキストです。この動作が非常に複雑であるからこ...
一つの要求一般的に、企業には複数のプロジェクトがあります。SVN サーバーを設定した後は、プロジェク...
ある会社の BI 職の面接を受けたとき、面接で SQL に関する質問がありました。一見すると非常に簡...
この記事では、指定された日付間のカウントダウンを実装するためのVueの具体的なコードを例として紹介し...