検索

ホームページ  >  に質問  >  本文

TypeScript の型は PropType から推測できますか?

<p>この場合、型を推測する方法はわかっています: </p> <pre class="brush:php;toolbar:false;">PropTypes を 'prop-types' からインポートします。 const props = { id: PropTypes.number、 }; type Props = PropTypes.InferProps; const x: 小道具 = {}; x.id; // 数値 | null | 未定義</pre> <p>ただし、私の場合は次のとおりです。</p> <pre class="brush:php;toolbar:false;">const propsShape = PropTypes.shape({ id: PropTypes.number、 // ネストされた PropTypes.shape 呼び出しを含むその他のプロパティ });</pre> <p>試してみると:</p> <pre class="brush:php;toolbar:false;">type PropsFromShape = PropTypes.InferProps<typeof propsShape>; const y: PropsFromShape = {}; const z = y.id; <p>コンパイルに失敗しました: </p> <pre class="brush:php;toolbar:false;">タイプ '{}' をタイプ 'PropsFromShape' に割り当てることはできません。 プロパティ 'isRequired' はタイプ '{}' にはありませんが、タイプ 'InferPropsInner<Pick<Requireable<InferProps<{ id: Requireable<number>; }>>, "isRequired">>' には必要です。 プロパティ 'id' はタイプ 'PropsFromShape' に存在しません。</pre> <p><code>shape</code> のパラメータを別の定数に抽出して上記のように行うことはできますが、<code>propsShape</code> からプロパティの型を直接推論する方法はありますか?良い方法でしょうか? </p>
P粉715304239P粉715304239526日前504

全員に返信(1)返信します

  • P粉872101673

    P粉8721016732023-08-15 09:53:53

    ネストされたオブジェクトのタイプを取得するには、type NestedProps = PropTypes.InferProps<typeof propsShape>['isRequired'];

    を使用できます。 リーリー

    または、props 定義全体を 1 か所に配置できる場合:

    リーリー

    個人的には後者の方が読みやすいと思います。

    返事
    0
  • キャンセル返事