如何根据Flow中的输入值表示对象返回类型?

时间:2017-05-01 08:53:10

标签: javascript flowtype

用于以下(最简化)函数的正确语法是什么:

function f(field: string): ??? {
    return {[field]: 42};
}

此功能的输出形状始终为:

f('foo') => {foo: 42}
f('blah') => {blah: 42}
f('a-okay') => {"a-okay": 42}
f('') => {"": 42}

是否有语法或特殊的$ Utility函数可以帮助我表达此函数的输出类型?它有可能吗?

为了记录,我永远不会用动态值调用这个函数,即

let x = random_string();
f(x)

相反,我只使用这个函数和字符串文字(常量),就像上面的例子一样。

1 个答案:

答案 0 :(得分:1)

您不能要求结果对象具有仅在调用函数时才知道的特定键,但您可以使用indexer property进行类型检查:

function f(field: string): { [string]: number } {
    return {[field]: 42};
}