マスターするタイプスクリプトユーティリティタイプ
Partial
タイプスクリプトのユーティリティタイプは、開発において不可欠なツールであり、タイプをより効率的に操作し、コードの保守性とタイプの安全性を向上させるのに役立ちます。これらの組み込みのツールタイプをマスターすると、複雑なタイプの変換を扱うときに安心できます。すべてのTypeScript開発者が熟練する必要があるコアの実用的なタイプは次のとおりです。

1。partial Partial<t></t>
:すべての属性をオプションにします
Partial<t></t>
オブジェクトのすべてのプロパティをオプションにする必要がある場合に役立ちます。操作を更新したり、オブジェクトの構成に使用したりするためによく使用されます。
インターフェイスユーザー{ ID:番号; 名前:文字列; 電子メール:文字列; } function updateuser(id:number、change:partial <user>){ //着信フィールドのみを更新}
このようにして、 changes
name
、 email
、または空のみを含めることができます。

注:
Partial
は浅く、ネストされたオブジェクトのプロパティは自動的にオプションになりません。
2。 Required<T>
:すべての属性を必要とします
Partial
とは反対に、 Required<T>
はすべてのオプションのプロパティを必須にします。構成オブジェクトのすべてのフィールドが入力されるようにするシナリオに適しています。

インターフェイスconfig { apiurl?:string; タイムアウト?:番号; retries?:number; } const defaultconfig:必須<config> = { apiurl: 'https://api.example.com'、 タイムアウト:5000、 再試行:3、 };
元のインターフェイスがオプションであっても、必須であっても、すべてのフィールドを提供する必要Required
。
3。Readonly Readonly<T>
:読み取り専用タイプを作成します
オブジェクトが予期せず変更されないようにします。修正したくない関数の定数、状態管理、またはパラメーターに適しています。
インターフェイスポイント{ X:番号; Y:番号; } const origin:readonly <point> = {x:0、y:0}; // Origin.x = 10; //❌エラー:値を割り当てることができません
大きなオブジェクトまたは状態の木にReadonly
使用すると、副作用を効果的に回避できます。
4。Pick Pick<T, K>
:指定された属性を抽出します
タイプから関心のあるいくつかのフィールドを選択し、新しいタイプを作成します。 API応答のトリミングまたはフォームフィールド選択に最適です。
インターフェイスユーザー{ ID:番号; 名前:文字列; 電子メール:文字列; パスワード:文字列; } type publicuser = pick <user、 'id' | 「名前」>; // {id:number;名前:文字列}
タイプセーフを維持しながら、敏感なフィールド( password
など)を公開しないでください。
5。Omit Omit<T, K>
:指定された属性を除外します
Pick
に反して、 Omit
特定のフィールドを削除するのに役立ちます。 DTO(データ転送オブジェクト)を処理する際に非常に実用的です。
タイプSAFEUSER = OMIT <user、 'password'>; // {id:number;名前:文字列;メール:文字列}
特に多くのフィールドがある場合、それはすべての非敏感なフィールドをマニュアルPick
よりも簡潔です。
6。 Record<K, T>
:キー値マッピングタイプを定義します
キーが1つのタイプであり、値が別のものであるオブジェクトが必要な場合、 Record
非常に適しています。
型ルート=録音<string、()=> string>; constルート:ルート= { 家:()=> '/'、 プロフィール:()=> '/プロフィール'、 設定:()=> '/settings'、 };
また、構成マッピング、状態列挙などにも一般的に使用されます。
より厳しい例:
タイプステータス= 'ロード' | 「成功」| 'エラー'; constメッセージ:録音<ステータス、string> = { 読み込み:「ロード...」、 成功:「操作は成功した」、 エラー:「エラーがありました」、 };
書き込みが少ないか、もう1つの状態を書くと、TypeScriptはエラーを報告します。
7。 Exclude<T, U>
、 Extract<T, U>
:タイプフィルタリング
Exclude<T, U>
:tからuに割り当てることができるタイプを除外しますExtract<T, U>
:uに割り当てることができるtのタイプを抽出します
タイプステータス= 'アイドル' | 「ロード」| 「成功」| 'エラー'; loadingStatesを入力=抽出<ステータス、 'loading' | 「アイドル」>; //「アイドル」| 「ロード」 タイプerroronly = exclude <status、 'idle' | 「ロード」| 「成功」>; // 'エラー'
条件付きおよび組合タイプの操作において非常に強力です。
8。NONNULLABLE NonNullable<T>
:nullを削除して定義されていません
null値を含む可能性のあるジェネリックを扱う場合、型がnull
または未定義のnullまたはundefined
扱う場合に役立つことを確認してください。
タイプmaybestring = string | null |未定義; タイプempulationString = nonullable <MayBestring>; // 弦
タイプガードとともに使用されると、型推論の精度を向上させることができます。
9。 Parameters<T>
およびReturnType<T>
:関数タイプ分析
関数タイプからパラメーターと戻り値タイプを抽出することは、高次関数またはテストツールに特に役立ちます。
function createUser(name:string、age:number):{id:number;名前:文字列;年齢:番号} { return {id:date.now()、name、age}; } type args = parameters <typeof createUser>; // [文字列、番号] タイプresult = returnType <typeof createUser>; // {id:number;名前:文字列;年齢:番号}
機能、ログ、キャッシュなどの一般的なロジックをカプセル化するために使用できます。
10。 Awaited<T>
:約束の深い結果を分析します
async/await
またはPromise.then
のリターンタイプを処理するのに適しています。その後、ネストされた約束を正しく解析できます。
タイプdeeppromise = Promise <Promise <Promise <String >>>; タイプ値= waited <deeppromise>; // 弦 async function fetchuser(){ return {id:1、name: 'alice'}; } タイプユーザー= waited <returnType <typeof fetchuser >>; // {id:number;名前:文字列}
特に複雑な非同期シナリオでは、 .then()
タイプの推論よりも正確です。
基本的にそれだけです。これらの実用的なタイプは「スキルを示す」ものではなく、毎日タイプスクリプトを書くときに効率とセキュリティを本当に改善できるツールです。たとえば、プロジェクトで使用しようとすることをお勧めします。
updateuserdto = obit <partial <user>、 'id'>をobit obit obit>; タイプApiresponse <t> = {data:t;ステータス:「成功」} | {エラー:文字列;ステータス:「エラー」}; datafromResponse <t> =抽出<待望<t>、{status: 'success'}> ['data'];
複雑ではありませんが、無視するのは簡単です。それらをマスターすると、あなたのタイプスクリプトは本当に紹介されています。
以上がマスターするタイプスクリプトユーティリティタイプの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック

PLACSTHETTHETTHE BOTTOMOFABLOGPOSTORWEBPAGESERVESPAGESPORCICALPURPOSESESFORSEO、userexperience、andDesign.1.IthelpswithiobyAllowingseNStoAccessKeysword-relevanttagwithtagwithtagwithtagwithemaincontent.2.iTimrovesexperiencebyepingepintepepinedeeping

イベントキャプチャとバブルは、DOMのイベント伝播の2つの段階です。キャプチャは最上層からターゲット要素までであり、バブルはターゲット要素から上層までです。 1.イベントキャプチャは、AddEventListenerのUseCaptureパラメーターをTrueに設定することにより実装されます。 2。イベントバブルはデフォルトの動作であり、UseCaptureはfalseに設定されているか、省略されます。 3。イベントの伝播を使用して、イベントの伝播を防ぐことができます。 4.イベントバブルは、動的なコンテンツ処理効率を改善するためにイベント委任をサポートします。 5.キャプチャを使用して、ロギングやエラー処理など、事前にイベントを傍受できます。これらの2つのフェーズを理解することは、タイミングとJavaScriptがユーザー操作にどのように反応するかを正確に制御するのに役立ちます。

ESモジュールとCommonJSの主な違いは、ロード方法と使用シナリオです。 1.CommonJSは同期的にロードされ、node.jsサーバー側環境に適しています。 2.ESモジュールは、ブラウザなどのネットワーク環境に適した非同期にロードされています。 3。Syntax、ESモジュールはインポート/エクスポートを使用し、トップレベルのスコープに配置する必要がありますが、CommonJSは実行時に動的に呼ばれるrequire/Module.Exportsを使用します。 4.CommonJSは、Expressなどのnode.jsおよびLibrariesの古いバージョンで広く使用されていますが、ESモジュールは最新のフロントエンドフレームワークとnode.jsv14に適しています。 5.混合することはできますが、簡単に問題を引き起こす可能性があります。

JavaScriptのごみ収集メカニズムは、タグクリアリングアルゴリズムを介してメモリを自動的に管理して、メモリ漏れのリスクを減らします。エンジンはルートオブジェクトからアクティブオブジェクトを横断およびマークし、マークされていないオブジェクトはゴミとして扱われ、クリアされます。たとえば、オブジェクトが参照されなくなった場合(変数をnullに設定するなど)、次のリサイクルでリリースされます。メモリリークの一般的な原因には以下が含まれます。 closurures閉鎖の外部変数への参照。 globalグローバル変数は引き続き大量のデータを保持しています。 V8エンジンは、世代のリサイクル、増分マーキング、並列/同時リサイクルなどの戦略を通じてリサイクル効率を最適化し、メインスレッドのブロック時間を短縮します。開発中、不必要なグローバル参照を避け、パフォーマンスと安定性を改善するためにオブジェクトの関連付けを迅速に装飾する必要があります。

node.jsでHTTPリクエストを開始するには、組み込みモジュール、axios、およびnode-fetchを使用する3つの一般的な方法があります。 1.依存関係のない内蔵http/httpsモジュールを使用します。これは基本的なシナリオに適していますが、https.get()を使用してデータを取得したり、.write()を介してPOSTリクエストを送信するなど、データステッチとエラーモニタリングの手動処理が必要です。 2.Axiosは、約束に基づいたサードパーティライブラリです。簡潔な構文と強力な機能を備えており、非同期/待ち声、自動JSON変換、インターセプターなどをサポートします。非同期リクエスト操作を簡素化することをお勧めします。 3.Node-Fetchは、約束と単純な構文に基づいて、ブラウザフェッチに似たスタイルを提供します

var、let、constの違いは、範囲、昇進、繰り返し宣言です。 1.VARは機能範囲であり、変動的なプロモーションを備えており、繰り返しの宣言が可能になります。 2.一時的なデッドゾーンを備えたブロックレベルの範囲であり、繰り返される宣言は許可されていません。 3.Constはブロックレベルの範囲でもあり、すぐに割り当てる必要があり、再割り当てすることはできませんが、参照型の内部値を変更できます。最初にconstを使用し、変数を変更するときにletを使用し、varの使用を避けます。

JavaScriptデータ型は、プリミティブタイプと参照タイプに分割されます。プリミティブタイプには、文字列、数字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り当てるときにコピーされるため、互いに影響を与えません。オブジェクト、配列、関数などの参照タイプはメモリアドレスを保存し、同じオブジェクトを指す変数は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問題に注意してください。これらの2種類の違いを理解することは、より安定した信頼性の高いコードを書くのに役立ちます。

DOMトラバーサルは、Webページ要素操作の基礎です。一般的な方法は次のとおりです。1。親ノードを取得するためにparentNodeを使用し、上向きに見つけるために連鎖させることができます。 2。子供は、子供の要素のコレクションを返し、インデックスを介して最初の子または末端の要素にアクセスします。 3. nextelementsiblingは次の兄弟要素を取得し、以前のエレメントを組み合わせて同性ナビゲーションを実現します。次のブラザーノードを強調表示するボタンをクリックするなど、構造、インタラクティブな効果などの動的に変更するなどの実用的なアプリケーション。これらの方法を習得した後、複雑な操作を組み合わせて達成できます。
