我正在编写一个接受字符串的函数,并且如果字符串值是枚举的成员,我想将其视为为该枚举定义的类型。简化示例:
const FRUITS = Object.freeze({
APPLE: 'APPLE',
BANANA: 'BANANA',
});
type Fruit = $Values<typeof FRUITS>
function fruitChecker(input: string) {
if (Object.values(FRUITS).includes(input)) {
(input: Fruit);
}
}
Flow抛出一个错误,说我在该条件中输入的不是Fruit。但是,如何将我的输入定义为“水果”呢?从更广泛的原始类型中细化输入后,是否有正确的方法可以对枚举成员执行操作?
答案 0 :(得分:1)
请参阅: https://github.com/facebook/flow/issues/6904和 https://github.com/facebook/flow/issues/2221
因此.includes
不能用于优化,并且Object.values
返回mixed
。这意味着您当前无法尝试的方案。