反应打字稿:初始化另一个对象内部的对象数组的默认值

时间:2020-06-10 10:42:20

标签: reactjs typescript

我有一个名为Parent的对象,它有另一个名为Child的对象的数组,当在组件类的状态下调用时,我不知道如何给出其初始值。 我尝试使用as Child[]进行投射,但仍然无法正常工作

父母:

export interface Parent {
    id: string,
    child : Child[]
}

组件中的状态

interface State {
    parent: Parent
}

如何初始化值

constructor(props: Props) {
    super(props);
    this.state = {
        parent: {
            id: "",
            child: [] as Child[]
        }
    }
}

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以在类定义中定义状态的类型:

View in the TypeScript Playground


export interface Parent {
    id: string,
    child : Child[]
}
interface State {
    parent: Parent
}
interface Props {
}

class MyComponent extends React.Component<Props, State> {
    constructor(props: Props) {
        super(props);
        this.state = {
            parent: {
                id: "",
                child: []  // you don't have to define type 
                           // typescript infers State interface in this.state
            }
        }
    }


    render() {
        return (<div>...</div>)
    }

}

在TypeScript中,React.Component是通用类型(又名 React.Component),因此您想为其提供 (可选)prop和state类型参数:

typescript-cheatsheet中阅读更多内容