React中的Typescript:在`this`上定义一个属性

时间:2016-12-28 19:48:50

标签: javascript reactjs typescript

在我的非tyepscript反应组件中我有

componentWillMount() {
    this.delayedSearch = _.debounce((val) => {
        this.onQuerySearch(val);
    }, 1000);
}

用于在输入字段上进行debouncing键入。然后在输入字段中我有<input onChange={event => this.delayedSearch(e.value)}>

但是,现在,当我切换到Typescipt时,我对_.debounce的分配给了我一个错误:

Property 'delayedSearch' does not exist on type 'UserSearch'.

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

那是因为你的班级没有声明拥有这个delayedSearch属性,因此编译器无法理解这个属性是什么。

在课堂上你应该有:

class MyComponent extends React.Component<MyProps, MyState> {
    private delayedSearch: (val: string) => void;

    componentWillMount() {
        // should be fine now
        this.delayedSearch = _.debounce((val) => {
            this.onQuerySearch(val);
        }, 1000);
    }
}