鉴于以下代码段,我收到以下错误... 我该怎么办?
此类型与预期不符 返回数字枚举类型。
type Size = 1 | 2 | 3;
const GetSize = (): Size => {
const result: number = parseInt(Math.random() * 20);
if (result > 3) {
return 3;
}
return result;
};
你可以try it online ...
修改
该问题与从整数到枚举的转换有关。
答案 0 :(得分:0)
Math.random()返回一个"浮点"数字在[0,1]之间。所以它可以返回0.5或0.31231。这些类型确实不兼容。即使它以相同的概率返回0或1,您仍然不在尺寸类型的约束范围内。
解决此问题的一种方法是执行return (int)result + 1
之类的操作。但我不知道Flow是否足够聪明才能理解。一种正确的方法是为您预期的所有情况设置if/else
,并根据这些情况明确返回1,2或3。就像你为大于3的结果做的那样。
答案 1 :(得分:0)
Math.random()
返回0到1之间的随机数,它的返回类型为number
。
您定义的退货类型比1 | 2 | 3
更严格。 Math.random()
不符合您定义的退货类型,因此无法退货。那是错误。
答案 2 :(得分:0)
无法转换它,因为flow number
不是1 | 2 | 3