用于以下(最简化)函数的正确语法是什么:
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)
相反,我只使用这个函数和字符串文字(常量),就像上面的例子一样。
答案 0 :(得分:1)
您不能要求结果对象具有仅在调用函数时才知道的特定键,但您可以使用indexer property进行类型检查:
function f(field: string): { [string]: number } {
return {[field]: 42};
}