React中Typescript的状态类型是什么

时间:2019-02-03 08:39:57

标签: typescript

当我使用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,而是使用一种类型来解决此问题。我该怎么做,请指导。

2 个答案:

答案 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> {
...