这里是一个简单的例子,我正在寻找什么。我正在实现一个数组,我想检查如果多 prop 是真的,类型的项目应该是数字[]。否则,设置类型为数字。
interface EnhancedSelectProps {
items: multi ? number[] : number;
multi?: boolean;
}
const EnhancedSelect = ({
items,
multi,
}: EnhancedSelectProps) => {}
我试过union类型,但是它不起作用。当我想做这样的事情时,它会给予我一个ts错误。
interface EnhancedSelectProps {
items?: number[] | number;
multi?: boolean;
}
const EnhancedSelect = ({
items,
multi,
}: EnhancedSelectProps) => {
if(multi) console.log(items.length);
else console.log(items)
}
2条答案
按热度按时间vawmfj5a1#
Titian打败了我,但是这里有一个使用泛型的版本
Playground
dgjrabp22#
最简单的选择是使用区分并集,区分
multi
字段:Playground链接
如果您使用的是旧版本的Typescript(〈= 4.6),您不能在让TS理解字段之间关系的同时解构参数,您需要放弃使用参数本身或在检查后解构:
Playground链接