首页 > 解决方案 > 如何在 React 中使用 Typescript 分配变量之前声明一个变量,而没有“类型中缺少索引签名”错误

问题描述

我正在尝试声明一个名为“reports”的变量并将其分配给具有字符串和数字类型的数组数组,但问题是当我分配它时出现一些错误。代码是这样的:

... // I get the response from an api
let reports: [string, string | number];
      for (let key of response.data) {
        reports.push(Object.entries(key)); // key = {a: 'a', b: 3, c: 'c'} something like this
      }

错误:

1. Variable 'reports' is used before being assigned.
2. Argument of type '[string, unknown][]' is not assignable to parameter of type 'string | number'.
  Type '[string, unknown][]' is not assignable to type 'string'.
3. Variable 'reports' is used before being assigned.

更新

我进行了这些更改,但仍然遇到问题并且不知道如何修复错误。

interface Report {
  [report: string]: [string, string | number];
}
let reports: Report[] = [];
      for (let key of response.data) {
        reports.push(Object.entries(key));
      }

错误

Argument of type '[string, string | number][]' is not assignable to parameter of type 'Report'.
  Index signature is missing in type '[string, string | number][]'.

标签: reactjstypescript

解决方案


您需要初始化变量,例如

let reports: [string, string | number] = [];

并制作reports一个数组

let reports: [string, string | number][] = [];

推荐阅读