Typescript-React State:元素隐式具有“ any”类型,因为类型“ State”没有索引签名

时间:2019-02-12 07:41:34

标签: reactjs typescript

我在小型项目中使用Typescript和React。我是打字稿和学习的新手。

所以我有这种状态:

type State = {
  field1: string,
  field2: string,
  field3: number,
  field4: string,
}

const SomeFields = ['field1', 'field3'];

class SomeComponent extends React.PureComponent<Props, State> {
  state: State = {
   // Default value for above fields
  }

  isValid = () {
    SomeFields.every((key) => {
      return this.state[key].length;
    });
  }
}

此处this.state[key].length行抛出错误Element implicitly has an 'any' type because type 'State' has no index signature

我可以理解需要为SomeFields定义类型,但是我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

您必须隐式告诉TypeScript这是状态键的数组。

const SomeFields: Array<keyof State>

这也改善了TS体验,因为当您尝试进行编辑时,您将在编辑器/ IDE中获得代码完成。将元素添加到SomeFields或使用switch等。