需要至少一个道具传递给组件[打字稿] [重复]

Posted

技术标签:

【中文标题】需要至少一个道具传递给组件[打字稿] [重复]【英文标题】:Require at least one prop to be passed to component [typescript] [duplicate] 【发布时间】:2021-03-02 03:04:35 【问题描述】:

快速提问 - 假设我有一个这样的组件:

interface ComponentInterface 
    nameA: string;
    nameB?: string;


const Component: React.FC<ComponentInterface> = (props) => 
     const  nameA, nameB  = props 
     const name = nameB || nameA;

     return <div>Hello World! Name: name</div>

如果我们不传递 nameA,Typescript 中是否有办法强制 nameB?

&lt;Component nameA="" nameB="John" /&gt;感觉不好,我不想把nameA变成nameA?: string,因为我至少要传递一个props。

这是一个过于简化的 c 版本。提早提!

【问题讨论】:

【参考方案1】:

是的,你可以使用联合类型:


interface Props1 
    nameA: string;
    nameB?: string;


interface Props2 
    nameB: string;


type Props = Props1 | Props2

意思是,如果你通过nameAnameB 是可选的。但是如果你没有通过nameA - nameB 是必需的。

【讨论】:

以上是关于需要至少一个道具传递给组件[打字稿] [重复]的主要内容,如果未能解决你的问题,请参考以下文章

svg 组件的打字稿正确类型作为道具传递

如何在带有打字稿的反应功能组件中定义自定义道具?

在打字稿中将 useState 作为道具传递

通用打字稿组件继承组件道具

将 VueJS Prop 传递给 TypeScript 类组件

从 makeStyles 切换到 mui5 sx 道具-打字稿错误(没有重载匹配此调用)传递具有位置的对象