国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
構(gòu)造タイプ
一致する値としてのタイプのコレクション
ユニオンタイプ
タイプ絞り込み
組合タイプの區(qū)別
さらに読む
結(jié)論は
ホームページ ウェブフロントエンド CSSチュートリアル タイプスクリプトを區(qū)別した組合を分類します

タイプスクリプトを區(qū)別した組合を分類します

Mar 14, 2025 am 10:57 AM

タイプスクリプトを區(qū)別した組合を分類します

TypeScriptは、スケーラブルなJavaScriptアプリケーションを構(gòu)築するための強(qiáng)力なツールであり、大規(guī)模なWeb JavaScriptプロジェクトの標(biāo)準(zhǔn)となっています。ただし、初心者の場合、TypeScriptにはいくつかのトリッキーなものもあり、その1つは組合タイプを區(qū)別しています。

次のコードを検討してください。

インターフェイスキャット{
  重量:番號;
  ひげ:番號;
}
インターフェイスドッグ{
  重量:番號;
  フレンドリー:boolean;
}
動(dòng)物を飼ってください:犬。

多くの開発者は、 animalにアクセスするときにweight屬性のみが有効である一方で、 whiskersfriendly屬性が無効であることに驚くでしょう。この記事では、その理由を説明します。

それに飛び込む前に、組合タイプ間のタイプスクリプトの區(qū)別を理解するのに役立つ構(gòu)造的および名目上のタイプをすばやく確認(rèn)しましょう。

構(gòu)造タイプ

構(gòu)造タイプを理解する最良の方法は、それらを公稱タイプと比較することです。使用した可能性のある入力言語のほとんどは、名目上タイプされています。たとえば、C#コード(JavaまたはC同様):

クラスfoo {
  public int x;
}
クラスブラ{
  public int x;
}

FooBlahまったく同じ構(gòu)造を持っていても、彼らは互いに値を割り當(dāng)てることができません。次のコード:

 blah b = new foo();

次のエラーが生成されます。

<code>無法隱式轉(zhuǎn)換類型“Foo”為“Blah”</code>

これらのクラスの構(gòu)造は重要ではありません。タイプFooの変數(shù)は、 Fooクラス(またはそのサブクラス)のインスタンスにのみ割り當(dāng)てることができます。

それどころか、タイプスクリプトは構(gòu)造タイプを採用します。 TypeScriptは、両方のタイプが同じ構(gòu)造を持っている場合、それらを互換性のあるものと見なします。

したがって、次のコードは正常に機(jī)能します。

クラスfoo {
  X:number = 0;
}
クラスブラ{
  X:number = 0;
}
F:foo = new blah();
b:blah = new foo();

一致する値としてのタイプのコレクション

これをさらに説明しましょう。次のコードが與えられます:

クラスfoo {
  X:number = 0;
}

f:foo;

f 、 Fooクラスインスタンスと同じ構(gòu)造であるすべてのオブジェクトを保持できる変數(shù)です。この場合、數(shù)字を表すxプロパティを意味します。これは、通常のJavaScriptオブジェクトでさえ受け入れることができることを意味します。

 f:foo;
f = {
  X:0
};

ユニオンタイプ

この記事の冒頭でコードに戻りましょう。

インターフェイスキャット{
  重量:番號;
  ひげ:番號;
}
インターフェイスドッグ{
  重量:番號;
  フレンドリー:boolean;
}

私たちは知っています:

動(dòng)物をさせてください:犬;

Dogインターフェイスと同じ構(gòu)造のオブジェクトをanimalにします。では、次のコードとはどういう意味ですか?

動(dòng)物を飼ってください:犬。

これにより、 animal種類がDogインターフェイスに一致するオブジェクト、またはCatインターフェイスに一致するオブジェクトとして定義します。

では、なぜanimal weight屬性にのみアクセスできるようになったのですか?簡単に言えば、それはタイプスクリプトがそれがどんなタイプであるかを知らないからです。タイプスクリプトはanimal DogまたはCatでなければならないことを知っていますが、どちらかかもしれません。 friendly財(cái)産にアクセスすることを許可されているが、インスタンスではanimal実際にはCatではなくDogではない場合、ランタイムエラーが発生する可能性があります。 whiskers屬性にも同じことが言えます。

ユニオンタイプは、屬性の組合ではなく、有効な値の組合です。開発者はしばしばこのようなコードを書きます:

動(dòng)物を飼ってください:犬。

そして、 animal DogCat特性の結(jié)合を持っていることを期待してください。しかし、これは別の間違いです。これはanimal有効なDogと有効なCat価値の関節(jié)に一致する値があることを指定しています。ただし、TypeScriptでは、存在することがわかっているプロパティにのみアクセスできます。現(xiàn)在、これは組合內(nèi)のあらゆる種類のプロパティを意味します。

タイプ絞り込み

今、私たちは持っています:

動(dòng)物を飼ってください:犬。

animalDogであるとき、 DogインターフェイスのDogとしてそれを正しく扱い、アクセス特性をどのように扱い、 Catのときにそれを処理しますか?現(xiàn)在、 in Operatorを使用できます。これは古いJavaScriptオペレーターであり、あまり頻繁に表示されない可能性があります。これにより、プロパティがオブジェクトに存在するかどうかをテストできます。例えば:

 o = {a:12}とします。

「a」in // true
oの「x」; // false

TypeScriptはinオペレーターと深く統(tǒng)合されていることがわかります。使用方法を見てみましょう:

動(dòng)物:犬|。

if(動(dòng)物の「フレンドリー」){
  console.log(animal.friendly);
} それ以外 {
  console.log(animal.whiskers);
}

このコードはエラーを生成しません。 ifブロック內(nèi)で、TypeScriptはfriendly財(cái)産があることを知っているので、 animal Dogに変換します。 elseブロック內(nèi)で、タイプスクリプトも同様にanimalCatとして扱います。これらのブロック內(nèi)のanimalオブジェクトの上にマウスをホバリングすることで、これをコードエディターで表示することもできます。

組合タイプの區(qū)別

ここでブログ投稿が終了することを期待するかもしれませんが、殘念ながら、屬性が存在するかどうかを確認(rèn)することにより、組合タイプを狹めることが非常に制限されます。シンプルなDogCat種類に適していますが、これらのタイプの間でより多くのタイプとより重複している場合、物事はより複雑で壊れやすくなります。

これは、ユニオンタイプを區(qū)別するのに役立つ場所です。私たちはすべてを以前から保持し、各タイプにプロパティを追加するだけです。その唯一の目的は、これらのタイプを區(qū)別(または「區(qū)別」する)ことです。

インターフェイスキャット{
  重量:番號;
  ひげ:番號;
  Animal_type: "cat";
}
インターフェイスドッグ{
  重量:番號;
  フレンドリー:boolean;
  Animal_type: "dog";
}

両方のタイプのANIMAL_TYPE屬性に注意してください。 2つの異なる値の文字列と間違えないでください。 ANIMAL_TYPE: "CAT";たまたま「貓」を含むタイプを表します。

今、私たちの検査はより信頼性が高まっています:

動(dòng)物:犬|。

if(animal.animal_type === "dog"){
  console.log(animal.friendly);
} それ以外 {
  console.log(animal.whiskers);
}

このチェックは、組合に參加する各タイプがANIMAL_TYPE屬性の異なる値を持っていると仮定して、絶対確実になります。

唯一の欠點(diǎn)は、新しいプロパティに対処する必要があることです。 DogまたはCatのインスタンスが作成されるたびに、 ANIMAL_TYPEユニークな正しい値を提供する必要があります。しかし、タイプスクリプトがあなたに思い出させるので、忘れることを心配しないでください。 ?

さらに読む

詳細(xì)を確認(rèn)したい場合は、Typeの狹窄に関するTypeScriptドキュメントをお読みください。これにより、ここで議論していることをより詳細(xì)に調(diào)べます。このリンクには、タイプアサーションに関するセクションがあります。これらを使用すると、タイプの判別器を使用したり、 inキーワードに依存したりせずに、獨(dú)自のカスタムチェックを定義してタイプを狹くすることができます。

結(jié)論は

この記事の冒頭で、次の例では、なぜweightが唯一のアクセス可能な特性であるのかと言いました。

インターフェイスキャット{
  重量:番號;
  ひげ:番號;
}
インターフェイスドッグ{
  重量:番號;
  フレンドリー:boolean;
}
動(dòng)物を飼ってください:犬。

私たちが學(xué)んだことは、TypeScriptはanimal DogCatになることができることしか知っていないが、両方ではないことを知っているということです。したがって、私たちはweightを得ることができます。これは2つの間の唯一の公共財(cái)産です。

組合タイプを區(qū)別するという概念は、TypeScriptがこれらのオブジェクトを區(qū)別する方法であり、このアプローチは、より大きなオブジェクトのコレクションであっても非常にスケーラブルです。したがって、チェックに使用できる?yún)g一のリテラル値を保持する両方のタイプに新しいANIMAL_TYPEプロパティを作成する必要があります。もちろん、これは追跡する必要があるもう1つのことですが、より信頼性の高い結(jié)果も生成します。これは、そもそもTypeScriptに必要なものです。

以上がタイプスクリプトを區(qū)別した組合を分類しますの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

「レンダリングブロッキングCSS」とは何ですか? 「レンダリングブロッキングCSS」とは何ですか? Jun 24, 2025 am 12:42 AM

ブラウザは、特にインポートされたスタイルシート、ヘッダーのインラインCSS、および最適化されていないメディアクエリスタイルを使用して、ブラウザがインラインおよび外部CSSをデフォルトで主要なリソースとして表示するため、ページレンダリングをブロックします。 1.重要なCSSを抽出し、HTMLに埋め込みます。 2。JavaScriptを介して非クリティカルなCSSの読み込みを遅らせる。 3.メディア屬性を使用して、印刷スタイルなどのロードを最適化します。 4.リクエストを減らすためにCSSを圧縮およびマージします。ツールを使用してキーCSSを抽出し、REL = "Preload"非同期負(fù)荷を組み合わせ、過度の分割と複雑なスクリプト制御を避けるためにメディア遅延荷重を合理的に使用することをお?jiǎng)幛幛筏蓼埂?/p>

外部対內(nèi)部CSS:最良のアプローチは何ですか? 外部対內(nèi)部CSS:最良のアプローチは何ですか? Jun 20, 2025 am 12:45 AM

TheBestAppRoachforCSDependsonTheProject'sSpecificNeeds.forLargerProjects、externalCssissisbetterduetoMaintainasiladability; forsmallerProjectsOrsingLe-PageApplications、internalcsSmightBemoresuitable.it

私のCSSは小文字でなければなりませんか? 私のCSSは小文字でなければなりませんか? Jun 19, 2025 am 12:29 AM

いいえ、CSSDOESNOTHAVETOBEINLOWERCASE。

CSSケース感度:重要なことを理解する CSSケース感度:重要なことを理解する Jun 20, 2025 am 12:09 AM

cssismostlycase-inssensitive、buturlsandfontfamilynamesarecase-sensitive.1)propertiesandvalueslikecolor:red; areotcase-sensitive.2)urlsmustmatchtheserver'scase、例えば、/畫像/logo.png.3)

Autoprefixerとは何ですか?それはどのように機(jī)能しますか? Autoprefixerとは何ですか?それはどのように機(jī)能しますか? Jul 02, 2025 am 01:15 AM

Autoprefixerは、ターゲットブラウザスコープに基づいてCSS屬性にベンダープレフィックスを自動(dòng)的に追加するツールです。 1.エラーで接頭辭を手動(dòng)で維持する問題を解決します。 2. PostCSSプラグインフォーム、CSSを解析し、プレフィックスする必要がある屬性を分析し、構(gòu)成に従ってコードを生成する屬性を分析します。 3.使用手順には、プラグインのインストール、ブラウザーリストの設(shè)定、ビルドプロセスでそれらを有効にすることが含まれます。 4。メモには、接頭辭を手動(dòng)で追加しない、構(gòu)成の更新を保持すること、すべての屬性ではなくプレフィックスを維持することが含まれ、プリ??プロセッサでそれらを使用することをお?jiǎng)幛幛筏蓼埂?/p>

CSSカウンターとは何ですか? CSSカウンターとは何ですか? Jun 19, 2025 am 12:34 AM

csScountersCantAnationally-bersectionSandLists.1)usecounter-resettoinitialize、counter-incrementtoincrease、andcounter()orcounters()todisplayvalues.2)を組み合わせたjavascriptfordynamiccontenttoensureaCurateupdatesと組み合わせます。

CSS:ケースはいつ重要ですか(いつそうではありませんか)? CSS:ケースはいつ重要ですか(いつそうではありませんか)? Jun 19, 2025 am 12:27 AM

CSSでは、セレクターと屬性名はケースに敏感ですが、値、名前の色、URL、およびカスタム屬性はケースに敏感です。 1.バックグラウンドカラーや背景色など、セレクターと屬性名はケース非感受性です。 2。値の16進(jìn)數(shù)色は大文字と小文字を區(qū)別しますが、赤と赤などの名前の色は無効です。 3. URLは癥例に敏感であり、ファイルロードの問題を引き起こす可能性があります。 4.カスタムプロパティ(変數(shù))はケースに敏感であり、使用する場合はケースの一貫性に注意を払う必要があります。

conic-gradient()関數(shù)とは何ですか? conic-gradient()関數(shù)とは何ですか? Jul 01, 2025 am 01:16 AM

TheConic-Gradient()functionsscreateScular勾配の勾配は、測定されていることを確認(rèn)してください

See all articles