当我使用any
将以打字稿编写的React应用程序中的state
传递给函数时,会出现tslint错误。
no-any:“ any”的类型声明失去类型安全性。考虑用更精确的类型替换它。
class AssetDrillDown extends React.Component<{}, IDetailsListAssetsState> {
constructor(props: {}) {
super(props);
this.state = {
items: _items
};
}
public componentDidMount(): void {
this.getData(this);
}
public getData(that: any): void {
// not relevant code
that.setState({items: _items});
}
}
我不想使用any
,而是使用一种类型来解决此问题。我该怎么做,请指导。
答案 0 :(得分:1)
您已经指定react组件的状态为alter user <your_user> default tablespace <your_tablespace_name>;
。
因此,如果要在函数中传递状态,则可以执行以下操作:
IDetailsListAssetsState
但是,如果您想执行public getData(that: IDetailsListAssetsState): void {
// now you can read `that.items`
...
}
,则getData
的代码建议您传递AssetDrillDown
实例而不是状态信息
然后您要做一些链接:
that.setState({items: _items});
注意: 尽管您的代码示例可能有原因,但是无需将类的实例传递给相同的类方法。您可以像这样简单地访问状态。
public getData(that: AssetDrillDown): void {
// now you can read that.state.items
...
}
答案 1 :(得分:0)
您应该将状态定义为接口,在其中可以以类型安全的方式定义类的期望,here对此进行了很好的解释。
props接口是泛型Diamond运算符中的第一个参数,状态是第二个。
interface IHelloFormProps {
name: string;
handleChange(event: any): void;
}
interface IHelloFormState {
inputName: string;
}
...
export default class HelloForm extends React.Component<IHelloFormProps, IHelloFormState> {
...