序文: 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 のプロジェクト例
この記事では、ブラインド効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具体...
序文MySQL をインストールすると、通常はスーパーユーザー root を作成します。多くの人がこの...
JSON データを美しいインデント形式で表示するには、最も単純な JSON.stringify 関...
プロジェクトにはアンケートが必要ですが、クライアントはアンケートのタイトルが純粋なHTMLタグでなけ...
mysql を構成するときに、構成ファイル内のデフォルトのストレージ エンジンを InnoDB に設...
目次キューマイクロタスク非同期/待機メッセージチャネルやっと付録ここ二日間、「タイムリーな setT...
最近、複数のdivにあるテーブルのTDを同じ幅に調整しても、揃えることができず、幅にパターンがないこ...
目次1. CDNの紹介1.1 react (最初にインポート) 1.2 react-dom(後ほど紹...
1つ。 Nexus プライベート サーバーを構築する理由は何ですか?社内の開発メンバーは全員外部ネッ...
Tomcat サーバーは、無料でオープン ソースの Web アプリケーション サーバーです。軽量のア...
入力ボックスが小さい場合、内容を入力した後に、入力内容が拡大されたプロンプト ボックスを表示したいこ...
この記事では、vue3.0の手動カプセル化ページングコンポーネントの具体的なコードを参考までに紹介し...
この記事では、Linux MySQL 8.0.18のインストールと設定のグラフィックチュートリアルを...
Mavenパッケージを解凍する tar xf apache-maven-3.5.4-bin.tar....
目次序文Websocketの使用Websocketオブジェクトの構築Websocket ステータスW...