当存在另一个属性时,将可选属性设为必需

我有如下所示的 proptypes


interface Props {

resource: string;

create?: boolean;

route?: string;

}

从上面可以看出,create 和route 是可选的props。但是,我想实现这样的类型:如果存在 create prop,则现在必须需要路由。有人知道如何做到这一点吗?


长风秋雁
浏览 135回答 3
3回答

慕工程0101907

您应该对这些道具进行分组,并将分组的道具设为可选interface RouteProps{create: boolean;route: string;}interface Props {resource: string;routeInfo?: RouteProps;}

喵喵时光机

您可以将其拆分为两种类型的联合并create与文字类型一起使用:type Props = {  resource: string;  create?: false;  route?: string} | {  resource: string;  create: true;  route: string;}

莫回无

实际上,您可以选择使用打字稿执行类似的操作:这可能就是您正在寻找的。但你必须明确设置TArgs<true>type TArgs<T extends boolean> = {&nbsp; &nbsp;a: T,&nbsp; &nbsp;b: string,&nbsp; &nbsp;c: T extends true ? string : null&nbsp;}使用工厂函数的示例:type TArgs<T extends true | false> = {&nbsp; &nbsp; a: T,&nbsp; &nbsp; c?: T extends true ? string : null}const argsFactory = <T extends boolean>(a: T, c: T extends true ? string : null): TArgs<T> => {&nbsp; &nbsp; return {&nbsp; &nbsp; &nbsp; &nbsp; a,&nbsp; &nbsp; &nbsp; &nbsp; c&nbsp; &nbsp; }}// WorksargsFactory(true, "string");argsFactory(false, null);// Doesnt WorkargsFactory(false, "some String");argsFactory(true, null)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript