我在小型项目中使用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
定义类型,但是我该怎么做呢?
答案 0 :(得分:1)
您必须隐式告诉TypeScript这是状态键的数组。
const SomeFields: Array<keyof State>
这也改善了TS体验,因为当您尝试进行编辑时,您将在编辑器/ IDE中获得代码完成。将元素添加到SomeFields
或使用switch
等。