鉴于以下代码片段,我收到以下错误... 我该如何修复它?
This type is incompatible with the expected return type of number enum.
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 ...
编辑:
该问题与从整数到枚举的转换有关。
最佳答案
Math.random() 返回 [0, 1) 之间的“ float ”。所以它可以返回0.5或0.31231。类型确实不兼容。即使它以相同的概率返回 0 或 1,您仍然超出了 Size 类型的限制。
解决此问题的一种方法是执行类似 return (int)result + 1
的操作。但我不知道 Flow 是否足够聪明,能够理解这一点。正确的方法是为您预期的所有情况使用 if/else
,并根据这些情况显式返回 1、2 或 3。就像您对大于 3 的结果所做的那样。
关于javascript - 如何修复以下 JavaScript 代码以使其与 Flowtype 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41695887/