打字稿上的Hoc Hof语法

时间:2017-02-01 02:36:58

标签: typescript ecmascript-6

我得到TS2300: Duplicate identifier 'UIBuilderForm'.例外。

我试图在UIBuilderForm

上应用HoC(高阶组件)

在使用ES6的打字稿上使用此语法的正确方法是什么?

    class UIBuilderForm extends React.Component<any, {}> {
        ...
    }


    let UIBuilderForm :any = reduxForm({
        form: FORM_NAME
    })(UIBuilderForm as any);

    const selector = formValueSelector(FORM_NAME) //

    let UIBuilderForm = connect(
        formStates
    )(UIBuilderForm)

    ??? UIBuilderForm = connect(
        mapStateToProps,
        mapDispatchToProps
    )(UIBuilderForm)


    export default UIBuilderForm

1 个答案:

答案 0 :(得分:1)

对于相同的变量名,您有两个let和一个class声明,这是不允许的。选择不同的名称,或省略let s:

class UIBuilderForm extends React.Component<any, {}> {
    ...
}

UIBuilderForm = reduxForm({
    form: FORM_NAME
})(UIBuilderForm);

const selector = formValueSelector(FORM_NAME) //

UIBuilderForm = connect(
    formStates
)(UIBuilderForm)

UIBuilderForm = connect(
    mapStateToProps,
    mapDispatchToProps
)(UIBuilderForm)

export default UIBuilderForm;

或者只是把所有东西放在一个大表达中:

const selector = formValueSelector(FORM_NAME);

export default connect(
    mapStateToProps,
    mapDispatchToProps
)(connect(
    formStates
)(reduxForm({
    form: FORM_NAME
})(class UIBuilderForm extends React.Component<any, {}> {
    ...
})));