【问题标题】:Unable to pass props when enum is used to define proptype使用枚举定义proptype时无法传递props
【发布时间】:2020-10-09 10:57:08
【问题描述】:

我正在使用 React + Typescript。

在我的一个组件中,我已将接口声明为

enum PersonDept {
   CIVIL = 'civil',
   PRIVATE = 'private'
}

interface IPerson {
   dept: PersonDept.CIVIL | PersonDept.PRIVATE
}

现在,如果我必须在其他任何地方使用 person 组件,那么我必须导出 enum 以传递 dept 属性类型。有什么方法可以让我跳过导出enum

另外,如果我无论如何都要导出enum,这样做是否正确?

【问题讨论】:

    标签: reactjs typescript interface react-proptypes


    【解决方案1】:

    根据您的类型,属性dept仅接受枚举PersonDept 的值

    所以是的,您必须使用枚举并在每次使用时导入它,这是期望的行为以及它通常的使用方式。

    有什么方法可以跳过导出枚举

    一种方法是不使用枚举:

    interface IPerson {
       dept: 'civil' | 'private'
    }
    

    还有一种更hacky且不推荐的方法是将枚举设置为全局变量,例如将其附加到window

    // Don't do it, just know it is possible
    window._IPreson = PersonDept
    

    【讨论】:

    • 谢谢丹尼斯,是的,我不能用骇人听闻的方式。会和另一个一起去。即导出枚举。
    • 如果有帮助请随时点赞
    猜你喜欢
    • 2015-01-18
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    相关资源
    最近更新 更多