コンポーネントから Props タイプを取得し、そのプロパティを省略します
P粉704066087
P粉704066087 2024-01-16 12:55:57
0
1
583

私は React の「上位コンポーネント」用の TypeScript 関数を開発しています。必要:###

    コンポーネント、
  • React Query
  • useQuery 型関数
  • パラメータ配列を返し、それを上記の
  • useQuery 型関数に渡します
  • オプションの
  • resultKey。クエリ結果をコンポーネントに伝播するか、指定されたキーの下にネストするかを決定します。
これはこれまでの私の実装です:

リーリー

正常に動作しますが、正しい型を取得するのに苦労しています。理想的には、(型指定された)コンポーネントを渡し、関数がそのコンポーネントからコンポーネントに必要な最終的な props セットが何であるかを「推測」します。

withQuery 呼び出しでは、親コンポーネントの小道具。 たとえば、次のようにすると: リーリー

withQuery

関数は理想的には十分に「スマート」である必要があります:

渡されたコンポーネントから「完全な」prop タイプ (org および uuid) を推測します

    「org」は
  1. resultKey
  2. であるため、prop はクエリから渡され、外部から渡す必要がないことを理解してください。したがって、エクスポートされたコンポーネント タイプから
  3. Omitted を省略できます。 超、超理想的です。
  4. useGetOrg
と入力し、resultKey が渡されない場合 (クエリの結果がプロパティとして伝播されることを意味します)、

withQuery 関数は次のことを検出できます。応答のすべてのキーはクエリによって提供されるため、レンダリングの親コンポーネントによって渡される必要はありません。 ###出来ますか?これは現時点では私の TypeScript の能力を少し超えています。 このメソッドをオーバーライドしてこの型推論を処理し、親コンポーネントが

withQuery

自体が提供していない props のみを渡す必要があるようにすることを手伝ってもらえますか?

または、それが不可能な場合は、withQuery を呼び出すときに、生成されたコンポーネントの props タイプを渡すことができますか?

P粉704066087
P粉704066087

全員に返信(1)
P粉203648742

あなたの質問が正しく理解できれば、withQuery に渡されるコンポーネント タイプを推測し、resultKey パラメータに渡されるプロパティを props から削除したいということになります。

React.ComponentProps ユーティリティ タイプを使用して、コンポーネントの props タイプを抽出できます。次に、Omit タイプ ユーティリティを使用して、コンポーネントの props から resultKey パラメーターに渡されたプロパティを抽出できます。

リーリー

コンポーネント自体から React コンポーネントの Prop タイプを抽出する方法の詳細については、この answer を参照してください。

また、クエリの結果タイプを推論し、その結果タイプに基づいて props からプロパティを削除する場合は、ResultType ユーティリティ タイプと keyof を使用して機能を実現できます。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート