Object.values无法正常工作打字稿如何解决?

时间:2019-02-27 20:01:15

标签: reactjs typescript

我有一只猫可以使用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"
  ]
}

1 个答案:

答案 0 :(得分:0)

您遇到的问题是数组[]的类型为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。它将做完全相同的事情,并且您不需要强制转换数组。