インターフェースの役割:インターフェース (英語: 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 をインストールする
今日、MySQLサービス1067エラー問題に遭遇しました。システムアカウントを使用するように設定して...
ファイルシステムとは何かInnoDB や MyIASM などのストレージ エンジンはテーブルをディス...
Baiduクラウドディスク:リンク: https://pan.baidu.com/s/1hv5rUW...
目次1. 検索バーの内容をカスタマイズする2. 検索ボタンをカスタマイズする検索バーをカスタマイズし...
1. 背景Docker サービスが開始されると、デフォルトで docker0 ブリッジが作成され (...
目次1. ファイルをインポートする2. HTMLページ3. メインコード4. 画像をbase64に変...
メインライブラリのバイナリログ: # 2420 で #170809 17:16:20 サーバー ID...
Object.definePropertyの理解文法:オブジェクト.defineProperty(o...
目次序文1. 現在のgccバージョン2. gccをインストールする3.gmpのインストール4.MPF...
この記事では、JavaScriptにおけるアロー関数と通常の関数の違いについて解説します。具体的な内...
いわゆる 3 列適応レイアウトとは、両側の幅が固定され、中央のブロックの幅が適応されることを意味しま...
目次1. 基本1.参照2. 参照3. 参照4. 最適な使い方2. 詳細な1. なぜrefが必要なのか...
概要:市販されているいくつかのタイムテーブルソフトウェアから教訓を得ました。機能が複雑すぎるため、タ...
I. 厳密モードの説明MySQL 5.0 以降の厳密モード (STRICT_TRANS_TABLES...
序文MySQL データベースでは、if else のような判断演算を使用することがあります。では、M...