声明对象的类型接口

时间:2017-01-22 02:32:50

标签: reactjs typescript

我无法弄清楚给定界面的这种类型声明有什么问题。

enter image description here

TS说:State is an unresolved variable

有人知道为什么语法不正确吗? (根据Webstorm和tsc编译器。)

2 个答案:

答案 0 :(得分:1)

stateReact.Component class的属性,您已通过第二个type variable将其声明为any

class Home extends React.Component<any, any> {
                                     // ^
                                     // This type variable declares the type for state

相反,你应该像这样delcare:

class Home extends React.Component<any, State> {
    constructor(props) {
        super(props);
        this.state = { items: [] };
    }
}

请注意,React.Component的{​​{1}}将props(通过第一个类型变量),这可能是您想要的,也可能不是。

答案 1 :(得分:-1)

您需要声明变量状态。我认为编译器正在将 State 视为变量而不是类型。

interface State {
    items: Array<string>[];
}

export class Home {

    private state: State;
    constructor(props) {
        this.state = { items: [] }
    }
}

此外,您应该在界面中为Array对象提供一个类型,如上例所示。