reactjs - Typescript 和 React 使用空类型数组设置初始状态

标签 reactjs typescript

假设我有以下片段:

interface State {
  alarms: Alarm[];
}
export default class Alarms extends React.Component<{}, State> {
  state = {
    alarms: []
  };

因为我正在尝试设置 alarms: [] Typescript 不喜欢它,因为 [] != Alarm[] .我发现我可以使用 alarms: new Array<Alarm>()它初始化一个空类型数组,但我不太喜欢这种语法 - 有没有更简单/更好的方法?

最佳答案

问题是,当您在类中创建一个字段时,编译器将相应地键入该字段(使用显式类型或从初始化表达式推断的类型,例如您的情况)。

如果要重新声明字段,则应明确指定类型:

export default class Alarms extends React.Component<{}, State> {
    state: Readonly<State> = {
        alarms: []
    };
}

或者在构造函数中设置状态:

export default class Alarms extends React.Component<{}, State> {
    constructor(p: {}) {
        super(p);
        this.state = {
            alarms: []
        };
    }
}

您也可以将数组转换为预期的类型,但如果有很多字段,最好让编译器为您检查对象字面量。

关于reactjs - Typescript 和 React 使用空类型数组设置初始状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51305171/

相关文章:

javascript - 在 Angular2/Typescript 中访问没有 ngModel 的输入字段值

reactjs - 跨源请求被阻止, header Access-Control-Allow-Origin 丢失

typescript - 如何在 TypeScript 接口(interface)中定义一个字符串数组?

angularjs - Angular 指令未在 ES6 中编译

javascript - 在 Typescript 中扩展基类属性

typescript - 为什么 `downlevelIteration` 默认不开启?

Typescript 随处只读切换? (功能参数)

javascript - React Table - useRowSelect 的单选输入

javascript - onClick 不渲染不同的 react 组件

javascript - NextJS 错误 : Component props are undefined when building the project (everything works fine on dev mode)