序文: TS の基本原則の 1 つは、構造の型チェックを行うことです。インターフェイスの目的は、これらの型に名前を付け、コードまたはサードパーティのコードのコントラクトを定義することです。 最終的に 1. インターフェース定義インターフェースの役割は タイプ str = 文字列 この記述方法は、関数型、クラス型、配列型のみを記述できるインターフェースには適用できません。 サンプルコードは次のとおりです。 // シンプルなインターフェースを定義する interface Person { 名前: 文字列 } //getメソッドを定義する function getPersonName(person: Person): void { console.log(人.名前) } // setメソッドを定義する function setPersonName(person: Person, name: string): void { person.name = 名前 } // personオブジェクトを定義する let person = { 名前: 「お粥一杯」 } setPersonName(人、'イーワン・ゾウ') // 変更成功 getPersonName(person) // Yiwan Zhou 型チェックではプロパティの順序はチェックされず、対応するプロパティが存在し、同じ型であることのみが要求されることに注意してください。 2. 属性2.1 オプション属性インターフェース内のプロパティがオプションであるか、特定の条件下でのみ存在する場合は、プロパティ名の横に ? 記号を追加できます。サンプルコードは次のとおりです。 ;(関数 () { // シンプルなインターフェースを定義する interface Person { 名前: 文字列 // 年齢はオプションであることを示します age?: number } // personオブジェクトを定義する let person = { 名前:「周の一杯」 年齢: 18歳 趣味:「コーディング」 } //getメソッドを定義する function getPersonName(person: Person): void { // console.log(person.age, person.hobby) // プロパティ 'hobby' はタイプ 'Person' に存在しません。 } })() この時点では、 2.2 読み取り専用プロパティプロパティを読み取り専用プロパティにしたい場合は、プロパティの前に サンプルコードは次のとおりです。 ;(関数 () { インターフェース Person { // 名前を読み取り専用に設定する readonly name: 文字列 } // personオブジェクトを定義する let person = { 名前:「周の一杯」 } // setメソッドを定義する function setPersonName(person: Person, name: string): void { person.name = name // 'name' は読み取り専用プロパティであるため、割り当てることはできません。 } setPersonName(人、'お粥一杯') })() 3. クラスタイプ3.1 継承インターフェースクラスと同様に、インターフェースも相互に継承できます。 これにより、あるインターフェースから別のインターフェースにメンバーをコピーできるようになり、インターフェースを再利用可能なモジュールに分割する際の柔軟性が向上します。 インターフェースの継承では extends キーワードを使用します。サンプル コードは次のとおりです。 // 2つのインターフェースを定義する interface PersonName { 名前: 文字列 } インターフェース PersonAge { 年齢: 番号 } // 上記の 2 つのインターフェースを継承する Person インターフェースを定義します。複数のインターフェースを使用する場合は、カンマで区切ります。interface Person extends PersonName, PersonAge { 趣味: 弦楽器 // 戻り値が文字列であるメソッドを定義する say(): 文字列 } 人 = { 名前:「周の一杯」 年齢: 18歳 趣味:「コーディング」 // サンプルメソッド say() { 「一碗の周」を返す }, } //getメソッドを定義する function getPersonName(person: Person): void { console.log(人名、年齢、趣味) } getPersonName(person) // Yiwan Zhou 18 コーディング 複数のインターフェースを継承する場合に、カンマで区切って使用します。 4. 関数の種類TS では、インターフェースは関数型のインターフェースも記述できます。 関数型インターフェースの定義は、パラメータ リストと戻り値の型のみを持つ関数定義に似ています。パラメータ リスト内の各パラメータには、名前と型が必要です。 サンプルコードは次のとおりです。 インターフェースMyAdd{ (x: 数値、y: 数値): 数値 } 定義が完了すると、この関数インターフェースを通常のインターフェースのように使用できるようになります。 サンプルコードは次のとおりです。 myAdd: MyAdd = (x: 数値, y: 数値): 数値 => { x + yを返す } 上記のコードは、次の関数定義と同等です。 myAdd: (x: 数値、y: 数値) => 数値 = ( x: 数値、 y: 数値 ): 数値 => { x + yを返す }
以下もご興味があるかもしれません:
|
<<: CSS の :focus-within の楽しさについて簡単に説明します
>>: CSS--overflow:hidden のプロジェクト例
MySQL では、IF()、IFNULL()、NULLIF()、および ISNULL() 関数を使用...
実行プロセスを分析します。マウスをノードに移動して、ノードにツールチップ実装を開くための識別子 (...
目次1. 浅いクローニング2. ディープクローニング1. 浅いクローニング浅いクローンでは配列やオブ...
コンピュータシステム: win7この記事は主に写真に基づいており、多くの写真が含まれていますCent...
アリババクラウドがサーバーを購入クラウドサーバーを購入し、サーバーバージョンとしてcentos 7....
ドラッグ機能は主に、ドラッグによる並べ替え、ポップアップ ボックスのドラッグと移動など、ユーザーがカ...
序文システムにファイル システムを作成し、それを永続的または非永続的にマウントする方法を学習します。...
序文クエリ情報が複数のテーブルから取得される場合、クエリのためにこれらのテーブルを結合する必要があり...
目次背景技術的ソリューション具体的な実装要約する背景Element UI は、PC で人気の Vue...
このテクニックは、この記事から来ています - シルキーでスムーズなパフォーマンスでボックスシャドウを...
目次1. ワークフローを実行する2. ミラーリングの基本コマンド1. ワークフローを実行するDock...
目次1. 現象2. 解決策3. 要約: 1. 現象1. 要件: 特定の表示ページをキャプチャしてアル...
導入JavaScript はデフォルトでシングルスレッドであるため、コードは並列実行するための新しい...
Web 標準に準拠した Web ページの構築は、jb51.net が常に全員と議論しているトピックで...
XQuery は、XML ドキュメントからデータを抽出するための言語です。 XQuery は、XML...