我该如何写条件布尔类型呢?
即
export interface Props {
editable: boolean;
position: { editable: true } ? Sheets.Matrix : never;
value: string;
classNames?: string;
textType?: "bold" | "editing" | "normal";
onChange?: (val: Sheets.SaveData) => void;
}
我用这样的 prop
const SheetsCell: React.FC<MainProps> = ({
editable,
value,
textType = "normal",
classNames = "",
position,
...
这里,如果某个东西是可编辑的,我希望位置的类型是Sheets.Matrix
,否则,位置不是必需的。
2条答案
按热度按时间fae0ux8s1#
一种方法是使用接口和交集运算符(
&
)。可以使用交叉点类型,该类型将多个类型合并为一个类型。
上述类型
MainProps
强制editable
在一种情况下为true
,在另一种情况下为false
。如果editable
为true
,则存在位置属性,如果为false,
,则存在位置属性,但不需要。unions用于生成可以是两个值之一的类型。
MainProps
可以是两个类型之一(都是与Props
类型的交集)。这里是Playground链接
luaexgnf2#
您可以使用类型别名来代替接口,例如: