【问题标题】:Using enum to define a another enum使用枚举定义另一个枚举
【发布时间】:2025-12-12 19:10:02
【问题描述】:

在 JavaScript 中是否允许使用一个 Enum 来定义另一个 Enum?

var VESSEL_DOCUMENT_SUB_TYPE = {
//  PLAN_TYPE           :   {
//      
//  },
    /** @enum {Number} */
    CERTIFICATE_TYPE    :   {
        BUNKER_OIL_POLLUTION_DAMAGE :   CERTIFICATE_TYPE.BUNKER_OIL_POLLUTION_DAMAGE,
        P_I_COE                     :   CERTIFICATE_TYPE.P_I_COE,
        H_M_SINGLE_COVER_NOTE       :   CERTIFICATE_TYPE.H_M_SINGLE_COVER_NOTE
    }/*,
    OTHER               :   {

    }*/
};

var CERTIFICATE_TYPE = {
    /** Bunker Oil Pollution Damage */
    BUNKER_OIL_POLLUTION_DAMAGE :   0,
    /** P&I (COE) */
    P_I_COE                     :   1,
    /** H&M Single Cover Note */
    H_M_SINGLE_COVER_NOTE       :   2
};

【问题讨论】:

    标签: javascript enums rhino


    【解决方案1】:

    是的,这是允许的。唯一的问题是,我得到一个运行时错误,因为CERTIFICATE_TYPE 应该在VESSEL_DOCUMENT_SUB_TYPE 之前定义

    var CERTIFICATE_TYPE = {
        /** Bunker Oil Pollution Damage */
        BUNKER_OIL_POLLUTION_DAMAGE :   0,
        /** P&I (COE) */
        P_I_COE                     :   1,
        /** H&M Single Cover Note */
        H_M_SINGLE_COVER_NOTE       :   2
    };
    
    var VESSEL_DOCUMENT_SUB_TYPE = {
    //  PLAN_TYPE           :   {
    //      
    //  },
        /** @enum {Number} */
        CERTIFICATE_TYPE    :   {
            BUNKER_OIL_POLLUTION_DAMAGE :   CERTIFICATE_TYPE.BUNKER_OIL_POLLUTION_DAMAGE,
            P_I_COE                     :   CERTIFICATE_TYPE.P_I_COE,
            H_M_SINGLE_COVER_NOTE       :   CERTIFICATE_TYPE.H_M_SINGLE_COVER_NOTE
        }/*,
        OTHER               :   {
    
        }*/
    };
    

    【讨论】: