我有一只猫工作js但不能在打字稿中工作我得到错误:
Argument of type '{y: string; u: string; } [] 'is not assignable to parameter of type' ConcatArray <never>
我读到问题可能在Object.values()
,文章说我也改变了配置tsconfig.json
我做了,但错误没有消失。 Object.values error Vido
码
const x = {
man: [
{
y: "y",
u: "u"
}
],
woman: [
{
y: "y",
u: "u"
}
]
};
function Y() {
return ([].concat(...Object.values(x)));
}
console.log(Y());
tsconfig.json
{
"compilerOptions": {
"target": "es2017",
"lib": [
"es2017",
"dom",
"dom.iterable",
"esnext"
],
"noImplicitAny": false,
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",
"forceConsistentCasingInFileNames": true
},
"include": [
"src"
]
}
你遇到的问题是数组[]
的类型为never[]
。如果你把[]
投射到unknown[]
它会工作。
const x = {
man: [
{
y: "y",
u: "u"
}
],
woman: [
{
y: "y",
u: "u"
}
]
};
function Y() {
return (([] as unknown[]).concat(...Object.values(x)));
}
console.log(Y());
编辑:
我实际上建议你使用return Object.values(x).flat();
而不是concat。它将执行完全相同的操作,您不需要强制转换数组。