TypeScript + React 组件属性之间的依赖

| 考察如下场景: 一个自定义的下拉选择框有个 type属性包含两种可能的值"native" | "simulate"当 type为simulate时还希望传递一个appearence控制其样式当 type为native时则不希望传递appearence属性
 即 appearence属性是否通过 TypeScript 的类型检查依赖于type的值,请问组件的属性类型如何定义。 一开始会以为这里需要借助泛型等手段来构造一个复杂类型,其实大可不必。因为后来一想不防用 Union Types 试试,实践后证实,事情其实没想的那么复杂。 类型定义: type SelectProps =  | {       type: "native";     }   | {       type: "simulate";       appearance: "default" | "link" | "button";     }; 使用: function CustomSelect(props: SelectProps) {  return <div>...</div>; } function App() {   return (     <>     {/* ✅ */}       <CustomSelect type="native" />       {/* ❌ Type '{ type: "native"; appearance: string; }' is not assignable to type 'IntrinsicAttributes & SelectProps'.   Property 'appearance' does not exist on type 'IntrinsicAttributes & { type: "native"; }'. */}       <CustomSelect type="native" appearance="button" />       {/* ❌ Type '{ type: "simulate"; }' is not assignable to type 'IntrinsicAttributes & SelectProps'.   Property 'appearance' is missing in type '{ type: "simulate"; }' but required in type '{ type: "simulate"; appearance: "default" | "link" | "button"; }'. */}       <CustomSelect type="simulate" />     {/* ✅ */}       <CustomSelect type="simulate" appearance="button" />     </>   ); } | 
| The text was updated successfully, but these errors were encountered: | 
以上是 TypeScript + React 组件属性之间的依赖 的全部内容,
                        来源链接:
                            utcz.com/z/383999.html