我不能使用Spread运算符发送数组吗?

时间:2019-02-27 12:00:49

标签: typescript

我有一个对象“ x”,当我想使用Object.values时,它具有两个属性man,woman和两个数组,我得到一个错误。我有两个问题,X应该是什么类型以及如何解决错误。 .. Object.values(x)。code

interface DD {
     y:string,
     u:string  
} 

const x = {
    man:[{
        y:'y',
        u:'u'  
    }],
    woman:[{
        y:'y',
        u:'u'  
    }]
}


function y (){
    return  [].concat(...Object.values(x));
}

console.log(y())

1 个答案:

答案 0 :(得分:0)

您尝试使用无类型的数组并与之连接,TypeScript不允许这样做,因为数组项类型不兼容。您可以输入空数组,然后将其正常运行,例如:

type Person = { y: string, u: string };
//...
function Y() {
    return ([] as Person[]).concat(...Object.values(x));
}

如果在编译器选项中定义了lib,则"es2017"需要"es2017.object"Object.values


如果您要针对支持它的JS版本,也可以改用Array.prototype.flat(lib:esnext):

function Y() {
  return Object.values(x).flat();
}