亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目次
2。関數(shù)とインターフェイスでジェネリックを使用します
例:一般的なAPI応答ラッパー
3。 extendsジェネリックを制約します
4.複數(shù)のタイプパラメーターとデフォルトタイプ
5。実際には再利用可能なコンポーネント
ホームページ ウェブフロントエンド jsチュートリアル TypeScriptジェネリックによる再利用性のロックを解除します

TypeScriptジェネリックによる再利用性のロックを解除します

Sep 16, 2025 am 03:14 AM
ジェネリック

タイプスクリプトジェネリックは、タイプ情報(bào)を保持しながら、関數(shù)、インターフェイス、およびコンポーネントが複數(shù)のタイプで動(dòng)作できるようにすることにより、再利用可能なタイプセーフコードを有効にします。 1。ジェネリックは、Tのようなタイプ変數(shù)を使用して、ID関數(shù)に見られるように、プレースホルダータイプを表し、型とは異なり、タイプの安全性を維持します。 2。これらは、Apiresponse のような構(gòu)造に最適であり、APIまたは州のマネージャー間でさまざまなデータ形狀の一貫した処理を可能にします。 3.拡張機(jī)能を使用して、Genericsを制約して、IDフィールドを持つオブジェクトのt extends {id:number}などの必要なプロパティを確保することができます。 4。複數(shù)のタイプパラメーター(例:k、v、r)は、mapobjectやデフォルトタイプなどの複雑な変換をサポートし、柔軟性を犠牲にすることなく使いやすさを向上させます。 5.ジェネリックは、ユーティリティ関數(shù)、usefetch ()のような反応フック、および複製を回避し、コンパイル時(shí)間の安全性を確保するために狀態(tài)管理で広く使用されているため、ロジックが異なるタイプで繰り返されるときにスケーラブルで保守可能なコードに不可欠になります。

TypeScriptジェネリックによる再利用性のロックを解除します

タイプスクリプトジェネリックは、再利用可能なタイプセーフコードを作成するための最も強(qiáng)力な機(jī)能の1つです。これらを使用すると、タイプ情報(bào)を犠牲にすることなく、単一の種類ではなく、さまざまなタイプで動(dòng)作するコンポーネント、関數(shù)、またはクラスを作成できます。これにより、強(qiáng)力なタイピングを維持しながら柔軟性が解除されます。これは、大規(guī)模なアプリケーションでは不可欠です。

TypeScriptジェネリックによる再利用性のロックを解除します

ジェネリックがどのように再利用可能なコードを作成するのに役立つか、いつそれらを使用するかを分解しましょう。


1。ジェネリックとは何ですか? (そしてなぜあなたがそれらを必要とするのか)

コアでは、ジェネリックを使用すると、タイプの安全性を維持しながらさまざまなタイプを処理できる関數(shù)またはデータ構(gòu)造を作成できます。

TypeScriptジェネリックによる再利用性のロックを解除します

たとえば、単純なアイデンティティ関數(shù)を想像してください。

関數(shù)ID(arg:any):any {
  argを返します。
}

これは機(jī)能しますが、タイプ情報(bào)を捨てます。ジェネリックを使用すると、あなたはそれを保存します:

TypeScriptジェネリックによる再利用性のロックを解除します
関數(shù)ID <T>(arg:t):t {
  argを返します。
}

ここで、 Tタイプ変數(shù)です。関數(shù)が呼び出されたときに使用される型のプレースホルダーです。

あなたはそれをこのように呼ぶことができます:

 const num = ID(42); //タイプ:番號(hào)
const str = ID( "hello"); //タイプ:文字列

タイプスクリプトは自動(dòng)的にTされるため、常にidentity<number>(42)を記述する必要はありません。

これは些細(xì)なことに思えるかもしれませんが、キャッシュ、API、または狀態(tài)マネージャーなどのユーティリティを構(gòu)築すると、タイプが異なるが動(dòng)作が一貫している場(chǎng)合に重要になります。


2。関數(shù)とインターフェイスでジェネリックを使用します

ジェネリックは、複數(shù)のタイプでロジックを抽象化するときに本當(dāng)に輝いています。

例:一般的なAPI応答ラッパー

一貫した形狀でAPI応答を処理しているとします:

インターフェイスapiresponse <t> {
  データ:t;
  ステータス:番號(hào);
  メッセージ?:文字列;
}

これで、このインターフェイスを異なるエンドポイントで再利用できます。

 const userresponse:apiresponse <user> = {
  データ:{id:1、name: "Alice"}、
  ステータス:200、
};

const postsresponse:apiresponse <post []> = {
  データ:[{id:1、title: "hello"}]、
  ステータス:200、
};

コンポーネントまたはサービスは、 Tの正確な形狀を知らずにApiResponse<T>を処理できるようになりましたが、それでも完全なオートコンプリートとタイプチェックを提供できます。


3。 extendsジェネリックを制約します

柔軟性が必要な場(chǎng)合もありますが、あまり柔軟性がありません。ジェネリックがextendsを使用して受け入れるタイプを制限できます。

たとえば、オブジェクトからプロパティを抽出する関數(shù)が必要であると仮定しますが、それはidフィールドがある場(chǎng)合にのみです。

 function logid <t extends {id:number}>(item:t):void {
  console.log(item.id);
}

これにより、渡された引數(shù)には、タイプnumberidが必要であることが保証されます。

 logid({id:123、name: "bob"}); //?わかりました
logid({name: "Charlie"}); //?エラー:「ID」がありません

このパターンは、構(gòu)造的保証が必要なユーティリティ関數(shù)、フォームハンドラー、またはシリアイザーで一般的です。


4.複數(shù)のタイプパラメーターとデフォルトタイプ

1つの一般的なタイプに限定されません。

 function mapobject <k、v、r>(
  OBJ:レコード<k、v>、
  fn :(値:v)=> r
):記録<k、r> {
  Object.fromentriesを返します(
    object.entries(obj).map(([key、value])=> [key、fn(value)]))
  )記録として<K、r>;
}

また、より良い人間工學(xué)のためにデフォルトタイプを提供することもできます。

インターフェイスqueryResult <t = unknown> {
  データ:t;
  読み込み:ブール;
}

QueryResult 、タイプが指定されていない場(chǎng)合はunknownですが、柔軟性のままです。


5。実際には再利用可能なコンポーネント

ジェネリックは特に役立ちます:

  • ユーティリティ関數(shù)(たとえば、 pickomit 、 deepClone
  • 國(guó)家管理(例、アクション、ペイロードタイプの還元?jiǎng)垼?/li>
  • 反応コンポーネント(例、フォーム、一般的な小道具を受け入れるモーダル)
  • フックを取得するデータ(例: useFetch<T>()

例:一般的な反応フック

関數(shù)usefetch <t>(url:string):{data:t |ヌル;読み込み:boolean} {
  const [data、setdata] = uesestate <t | null>(null);
  const [loading、setloading] = uesestate(true);

  effect(()=> {
    フェッチ(url)
      .then(r => r.json())
      .then(data => setData(tとしてのデータ))
      .finally(()=> setLoading(false));
  }、[url]);

  {data、loading}を返します。
}

// 使用法
const {data} = usefetch <user []>( "/api/users");

ここでは、同じフックが予想される応答タイプを安全に処理します。


ジェネリックは最初は抽象的に感じるかもしれませんが、將來のコードを書くことができるタイプスクリプトの方法です。それらを使用し始めると、複製が少なくなり、自信を持ってリファクタリングし、コンパイル時(shí)間でバグをキャッチすることがわかります。

基本的に:さまざまなタイプについて同じロジックを繰り返している場(chǎng)合は、ジェネリックに手を伸ばす時(shí)が來ました。

以上がTypeScriptジェネリックによる再利用性のロックを解除しますの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、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 ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調(diào)査により賢明な意思決定を?qū)g現(xiàn)

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中國(guó)語版

SublimeText3 中國(guó)語版

中國(guó)語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

ホットトピック

ジェネリック関數(shù)は Golang の可変長(zhǎng)引數(shù)の型の問題を解決しますか? ジェネリック関數(shù)は Golang の可変長(zhǎng)引數(shù)の型の問題を解決しますか? Apr 16, 2024 pm 06:12 PM

Go のジェネリック関數(shù)は、可変個(gè)引數(shù)型の問題を解決します。ジェネリック関數(shù)を使用すると、実行時(shí)に型パラメータを指定できます。これにより、さまざまな型のパラメータを処理できる関數(shù)を作成できるようになります。たとえば、Max 関數(shù)は、2 つの同等のパラメーターを受け取り、大きい方の値を返す汎用関數(shù)です。ジェネリック関數(shù)を使用すると、さまざまな種類のパラメーターを処理できる、より柔軟で汎用的なコードを作成できます。

golang でのジェネリックスの具體的なアプリケーション シナリオ golang でのジェネリックスの具體的なアプリケーション シナリオ May 04, 2024 am 11:45 AM

Go でのジェネリックスのアプリケーション シナリオ: コレクション操作: フィルター処理など、あらゆるタイプに適したコレクション操作を作成します。データ構(gòu)造: キュー、スタック、マップなどの汎用データ構(gòu)造を作成して、さまざまな種類のデータを保存および操作します。アルゴリズム: さまざまな種類のデータを処理できる、並べ替え、検索、リダクションなどの汎用アルゴリズムを作成します。

Golang ジェネリックは関數(shù)のシグネチャとパラメーターにどのような影響を與えますか? Golang ジェネリックは関數(shù)のシグネチャとパラメーターにどのような影響を與えますか? Apr 17, 2024 am 08:39 AM

Go 関數(shù)のシグネチャとパラメーターに対するジェネリックスの影響には、以下が含まれます。 型パラメーター: 関數(shù)シグネチャーには、関數(shù)が使用できる型を指定する型パラメーターを含めることができます。型制約: 型パラメーターには、満たさなければならない條件を指定する制約を設(shè)定できます。パラメーターの型の推論: コンパイラーは、指定されていない型パラメーターの型を推論できます。型の指定: パラメーターの型を明示的に指定して、ジェネリック関數(shù)を呼び出すことができます。これにより、コードの再利用性と柔軟性が向上し、複數(shù)の型で使用できる関數(shù)や型を作成できるようになります。

Java 列挙型はジェネリックとどのように連攜するのでしょうか? Java 列挙型はジェネリックとどのように連攜するのでしょうか? May 04, 2024 am 08:36 AM

Java における列挙型とジェネリックの組み合わせ: ジェネリックを使用して列挙を宣言する場(chǎng)合は、山かっこを追加する必要があります。T は型パラメータです。ジェネリック クラスを作成するときは、山括弧を追加する必要もあります。T は、任意の型を格納できる型パラメーターです。この組み合わせにより、コードの柔軟性、型安全性が向上し、コードが簡(jiǎn)素化されます。

Java関數(shù)ジェネリックの上限と下限は何ですか?使い方? Java関數(shù)ジェネリックの上限と下限は何ですか?使い方? Apr 26, 2024 am 11:45 AM

Java 関數(shù)ジェネリックでは、上限と下限を設(shè)定できます。 Extends は、関數(shù)によって受け入れられるか返されるデータ型が、指定された型のサブタイプである必要があることを指定します。下限 (スーパー) は、関數(shù)によって受け入れられるか返されるデータ型が、指定された型のスーパータイプである必要があることを指定します。ジェネリックを使用すると、コードの再利用性とセキュリティが向上します。

Golang の汎用関數(shù)の制限は何ですか? Golang の汎用関數(shù)の制限は何ですか? Apr 16, 2024 pm 05:12 PM

Go 汎用関數(shù)の制限: 型パラメーターのみがサポートされ、値パラメーターはサポートされません。関數(shù)の再帰はサポートされていません。型パラメータは明示的に指定できず、コンパイラによって推論されます。

C++ テンプレートとジェネリックの比較? C++ テンプレートとジェネリックの比較? Jun 04, 2024 pm 04:24 PM

C++ におけるテンプレートとジェネリックの違い: テンプレート: コンパイル時(shí)に定義され、明確に型指定され、効率が高く、コード サイズが小さい。ジェネリック: 実行時(shí)の型指定、抽象インターフェイス、柔軟性を提供しますが、効率は低くなります。

Java ジェネリック メソッドはどのように型推論を?qū)g行しますか? Java ジェネリック メソッドはどのように型推論を?qū)g行しますか? May 01, 2024 pm 02:45 PM

Java ジェネリック メソッドは、明示的な宣言を行わなくても、型パラメータを自動(dòng)的に推論します。ルールには次のものが含まれます。 1. 明示的な型宣言を使用する。 2. 単一の型を推測(cè)する。 4. コンストラクターの戻り値の型を推測(cè)する。これによりコードが簡(jiǎn)素化され、汎用メソッドの作成と使用が容易になります。

See all articles