Typescript: タプルの配列からの動的リスト、交差なし
P粉163951336
2023-08-31 23:02:45
<p><pre class="brush:php;toolbar:false;">const インテント = ["プライマリ", "セカンダリ", "アクセント", "危険"] as const;
const buttonSizes = ["小さい"、"中"、"大きい"] as const;
type IntentType = (インテントのタイプ)[数値];
type SizeType = (ボタンサイズの種類)[数値];
タイプ ButtonProps = {
インテント?: インテントタイプ;
サイズ?: サイズタイプ;
} & {
[IntentType の K は `${小文字<K>}` として]?: ブール値;
};</pre>
<p>このコードでは、Vue コンポーネントが次のプロパティを受け取ることができることを期待しています。
</p>
<p>または
のように
</p>
<p>ここで、次のようにコードをより静的に書いてみます。</p>
<pre class="brush:php;toolbar:false;">type ButtonProps = {
意図?: "プライマリ" | "セカンダリ" | "アクセント" | "危険";
サイズ?: "小" | "中" | "大";
プライマリ?: ブール値;
二次?: ブール値;
アクセント?: ブール値;
危険?: ブール値;
}</pre>
<p>それは機能します...しかし、インテントオプションを反復処理して、それを繰り返し続ける必要があるコードが他にもいくつかあります...</p>
<p>最初の例は機能しますが、何らかの理由で VUE がエラーをスローします</p>
<ブロック引用>
<p>内部サーバー エラー: [@vue/compiler-sfc] 型パラメータが渡されました
DefineProps() はリテラル型またはインターフェイスへの参照である必要があります
またはテキストタイプ。 </p>
</blockquote>
<p>このバグは既知で解決されているようですので、</p>
<p>交差を使用せずに ButtonProps をより動的に定義する他の方法は何ですか? </p>
エラーに「インターフェイスまたはリテラル型を参照しています」と表示されていることから、基本型を拡張するインターフェイスとして
リーリー ######遊び場######ButtonProps
を定義すると機能すると思います。