TypeScript の型は PropType から推測できますか?
P粉715304239
P粉715304239 2023-08-14 17:59:21
0
1
501
<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粉715304239
P粉715304239

全員に返信(1)
P粉872101673

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

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

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

リーリー

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

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