84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
TS は補間された prop 値の型が次のように考えているようです:
は文字列ではありません (区別可能な共用体で使用されている場合)?
以下の 3 番目の p3 インスタンスでは、ev フィールドの型推論が失われますが、これは href が補間されたエスリテラル文字列である場合に限られます。
p3
ev
TSサンドボックス完全再現
アップデート TS5.2
このバグは microsoft/TypeScript#53907 で修正されているため、TypeScript 5.2 以降、質問内のコードは変更を加えることなく期待どおりに動作します。
TS 5.2.0-dev.20230516
TS5.1の元の回答-
結局のところ、はい、これは TypeScript (microsoft/TypeScript#53888 として) のバグであり、私が Stack Overflow の質問に答えて提出したものです。コンパイラーは、discrimination 属性 href が unknown ではなく string 型であることを認識しているようですが、これは遅すぎますコンテキストに基づいて onClick コールバック パラメーターを入力します。おそらく、テンプレート リテラル補間は、問題の原因となるものを遅らせるのに十分です。
href
unknown
string
onClick
GitHub の問題は バックログ にあります。これは、TS チームがすぐに修正する予定がないことを意味します...しかし、そのため、Needs Help a> としてもマークされています。これは、コミュニティ メンバーからのプル リクエストを受け入れることを意味するため、この問題をできるだけ早く解決したいと考えている人は、自分で修正を提供することを検討する必要があります。
一方、ここで私が提案する回避策は、事前に文字列補間を実行し、それを const に格納して、その型が事前に分かるようにすることです。 リーリー
const
アップデート TS5.2
このバグは microsoft/TypeScript#53907 で修正されているため、TypeScript 5.2 以降、質問内のコードは変更を加えることなく期待どおりに動作します。
TS 5.2.0-dev.20230516
の Playground リンクを使用します。TS5.1の元の回答-
結局のところ、はい、これは TypeScript (microsoft/TypeScript#53888 として) のバグであり、私が Stack Overflow の質問に答えて提出したものです。コンパイラーは、discrimination 属性
href
がunknown
ではなくstring
型であることを認識しているようですが、これは遅すぎますコンテキストに基づいてonClick
コールバック パラメーターを入力します。おそらく、テンプレート リテラル補間は、問題の原因となるものを遅らせるのに十分です。GitHub の問題は バックログ にあります。これは、TS チームがすぐに修正する予定がないことを意味します...しかし、そのため、Needs Help a> としてもマークされています。これは、コミュニティ メンバーからのプル リクエストを受け入れることを意味するため、この問題をできるだけ早く解決したいと考えている人は、自分で修正を提供することを検討する必要があります。
一方、ここで私が提案する回避策は、事前に文字列補間を実行し、それを
これは面倒ですが (おそらく JSX の場合はさらに面倒です)、少なくとも機能します。const
に格納して、その型が事前に分かるようにすることです。 リーリー