# Source: ExtField.js

    /**
     * @content 扩展字段头功能组件
     * @author  2019-09-16
     */
    import { NativeModules } from 'react-native';

    let EF = NativeModules.JSExtField;

    /**
     * @class ExtField
     * @description 扩展字段头
     */
    export default class ExtField {
      /**
       * 构造一个新的 ExtField 对象。
       * @memberOf ExtField
       * @returns {Promise.<ExtField>}
       */
      async createObj() {
        try {
          if (
            typeof arguments[0] === 'number' &&
            typeof arguments[1] === 'number'
          ) {
            var { ExtFieldId } = await EF.createObj(arguments[0], arguments[1]);
            var extField = new ExtField();
            extField._MGExtFieldId = ExtFieldId;
            return extField;
          }
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 获取别名
       * @memberOf ExtField
       * @return {Promise<*>}别名
       */
      async getAlias() {
        try {
          return await EF.getAlias(this._MGExtFieldId);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 设置别名
       * @memberOf ExtField
       * @param alias 别名
       * @return {Promise<void>}
       */
      async setAlias(alias) {
        try {
          await EF.setAlias(this._MGExtFieldId, alias);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 获取是否允许为空
       * @memberOf ExtField
       * @return {Promise<*>}true/false
       */
      async getIsNull() {
        try {
          return await EF.getIsNull(this._MGExtFieldId);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 设置是否允许为空
       * @memberOf ExtField
       * @param value true/false
       * @return {Promise<void>}
       */
      async setIsNull(value) {
        try {
          await EF.setIsNull(this._MGExtFieldId, value);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 获取域ID
       * @memberOf ExtField
       * @return {Promise<*>}ID值
       */
      async getDmnID() {
        try {
          return await EF.getDmnID(this._MGExtFieldId);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 设置域ID
       * @memberOf ExtField
       * @param value ID值
       * @return {Promise<void>}
       */
      async setDmnID(value) {
        try {
          await EF.setDmnID(this._MGExtFieldId, value);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 获取字段形态
       * @memberOf ExtField
       * @return {Promise<*>}字段形态
       */
      async getShape() {
        try {
          return await EF.getShape(this._MGExtFieldId);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 设置字段形态
       * @memberOf ExtField
       * @param shape 字段形态
       * @return {Promise<void>}
       */
      async setShape(shape) {
        try {
          await EF.setShape(this._MGExtFieldId, shape);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 获取取离散值数目
       * @memberOf ExtField
       * @return {Promise<*>}数目
       */
      async getShapeInfoNum() {
        try {
          return await EF.getShapeInfoNum(this._MGExtFieldId);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 获取字段类型
       * @memberOf ExtField
       * @return {Promise<*>}字段类型
       */
      async getFieldType() {
        try {
          return await EF.getFieldType(this._MGExtFieldId);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 是否设置缺省值
       * @memberOf ExtField
       * @return {Promise<*>}非0/0 ：是/否
       */
      async hasDefVal() {
        try {
          return await EF.hasDefVal(this._MGExtFieldId);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 是否设置最大值
       * @memberOf ExtField
       * @return {Promise<*>} 非0/0 ：是/否
       */
      async hasMaxVal() {
        try {
          return await EF.hasMaxVal(this._MGExtFieldId);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 是否设置最小值
       * @memberOf ExtField
       * @return {Promise<*>} 非0/0 ：是/否
       */
      async hasMinVal() {
        try {
          return await EF.hasMinVal(this._MGExtFieldId);
        } catch (e) {
          console.error(e);
        }
      }
    }