在流程documentation中,它说明了typeof"此类型测试与联合类型结合使用特别有用。"然而,以下内容并没有通过流&的镰刀:
var EventEmitter = require('events').EventEmitter;
var fnify = function(key: string | (x: number, y: any) => string) {
var fnkey = typeof(key) === 'function' ? key : (t) => key;
new EventEmitter().emit(fnkey(0), 0);
}
Flow抱怨它不知道fnkey的返回值,这是奇数,因为它保证是来自函数签名的字符串。经历的是:
var EventEmitter = require('events').EventEmitter;
var fnify = function(key: string | (x: number, y: any) => string) {
var fnkey = typeof(key) === 'function'
? key
: (t) => typeof(key) === 'string' ? key : null;
var kludge = fnkey(0);
if (kludge) {
new EventEmitter().emit(kludge, 0);
}
}
但后者似乎不必要地冗长。这是一个功能吗?错误?第一个片段是否有什么问题导致流量激增?
答案 0 :(得分:0)
问题是key
可以在函数体中更改,使用const
binding
var EventEmitter = require('events').EventEmitter;
var fnify = function(key: string | (x: number, y: any) => string) {
const k = key;
var fnkey = typeof(k) === 'function' ? k : (t) => k;
new EventEmitter().emit(fnkey(0), 0);
}
或在experimental.const_params=true
[option]
部分设置.flowconfig