我在TypeScript中有一个React应用程序,其中包含的代码
export interface State {
expandedRows: any,
}
class MyComponent extends React.Component<Props, State> {
state = {
expandedRows: [],
};
isExpanded = (rowId: number) => {
return this.state.expandedRows.includes(rowId);
}
,当我在TypeScript error: Argument of type 'number' is not assignable to parameter of type 'never'. TS2345
方法中输入rowId
变量时,它将发出错误includes
。
我尝试将expandedRows的类型更改为Array,但是遇到相同的错误。我尝试从State界面中删除expandedRows,但遇到相同的错误。我觉得也许我的State接口现在已经以某种方式分配给this.state
。或者,也许includes
方法没有为其输入指定类型。我该如何解决这个问题?
答案 0 :(得分:1)
尝试一下:
state = {
expandedRows: [] as any,
};
但是,您可能希望将expandedRows
的类型设置为number[]
,因为您希望在那里有索引:
export interface State {
expandedRows: number[],
}
state = {
expandedRows: [] as number[],
};
没有类型转换的更合理的解决方案是在构造函数中初始化状态:
constructor(props){
super(props);
this.state = {
expandedRows: [],
};
}
答案 1 :(得分:1)
除了其他好的答案之外,您还可以指定state
state: State = {
expandedRows: [],
};