【发布时间】:2019-08-21 11:58:03
【问题描述】:
我正在尝试将一些映射值分配给这样的对象:
const sampleStrings = ['foo', 'bar', 'baz'];
const sampleValues = sampleStrings.map(value => ({
[value]: {
name: 'bob',
},
}));
const result = Object.assign(...sampleValues);
console.log(result)
但是,我收到以下错误消息:
TS2557:预期至少有 1 个参数,但得到了 0 个或更多。
我知道我应该做类似的事情
interface Foo {
[x: string]: {
name: string;
};
}
const sampleStrings = ['foo', 'bar', 'baz'];
const sampleValues = sampleStrings.map(value => ({
[value]: {
name: 'bob',
},
}));
const result = Object.assign(...sampleValues);
但我无法完全弄清楚我的Foo 接口应该如何配置。另外,如果我不知道我的sampleStrings 数组的长度会怎样,那我该如何解决这个问题呢?
【问题讨论】:
-
因为
Array.prototype.map返回类型是T[]并且不可能从中推断出它的大小至少为1。
标签: typescript