Object.values不能使用typescript如何修复?

问题描述 投票:0回答:1

我有一只猫工作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"
  ]
}
reactjs typescript
1个回答
1
投票

你遇到的问题是数组[]的类型为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。它将执行完全相同的操作,您不需要强制转换数组。

© www.soinside.com 2019 - 2024. All rights reserved.