使用状态并包含在React中给类型'number'的参数不能分配给'never'类型的参数错误

时间:2019-12-18 19:02:43

标签: reactjs typescript

我在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方法没有为其输入指定类型。我该如何解决这个问题?

2 个答案:

答案 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: [],
};