【发布时间】:2018-04-06 19:25:18
【问题描述】:
我有一个枚举,它是flowtype 中其他两个枚举(所有字符串文字)的组合。
现在我有一个函数f1,它只接受枚举的一部分。基于if 子句,我想确保只将正确的参数传递给这个f1。
如果我使用if 匹配字符串,它可以工作。但是一旦我有一个具有完全相同字符串的变量,它就会出错。
见代码:
为什么 f3 会出错?
/* @flow */
type Enum1 = 'a' | 'b';
type Enum2 = 'c';
type Enum3 = Enum1 | Enum2;
const c = 'c';
// same problem if I use:
// const c: Enum2 = 'c';
const f1 = (e1: Enum1) => console.log(e1);
// this works
const f2 = (e3: Enum3) => {
if (e3 !== 'c') {
f1(e3);
}
}
// this breaks - why?
const f3 = (e3: Enum3) => {
if (e3 !== c) {
f1(e3);
}
}
// this works
const f4 = (e3: Enum3) => {
if (e3 !== c) {
(e3 === 'c' ? '' : f1(e3))
}
}
【问题讨论】:
标签: javascript enums flowtype