gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 20:32:32 27 4
gpt4 key购买 nike

假设我有以下片段:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com