static calcObjectType()

in src/internal/BinaryUtils.ts [311:355]


    static calcObjectType(object): PRIMITIVE_TYPE | CompositeType {
        const objectType = typeof object;
        if (object === null) {
            throw IgniteClientError.unsupportedTypeError(BinaryUtils.TYPE_CODE.NULL);
        }
        else if (objectType === 'number') {
            return BinaryUtils.TYPE_CODE.DOUBLE;
        }
        else if (objectType === 'string') {
            return BinaryUtils.TYPE_CODE.STRING;
        }
        else if (objectType === 'boolean') {
            return BinaryUtils.TYPE_CODE.BOOLEAN;
        }
        else if (object instanceof Timestamp) {
            return BinaryUtils.TYPE_CODE.TIMESTAMP;
        }
        else if (object instanceof Date) {
            return BinaryUtils.TYPE_CODE.DATE;
        }
        else if (object instanceof EnumItem) {
            return BinaryUtils.TYPE_CODE.ENUM;
        }
        else if (object instanceof Decimal) {
            return BinaryUtils.TYPE_CODE.DECIMAL;
        }
        else if (object instanceof Array) {
            if (object.length > 0 && object[0] !== null) {
                return BinaryUtils.getArrayType(BinaryUtils.calcObjectType(object[0]));
            }
        }
        else if (object instanceof Set) {
            return new CollectionObjectType(CollectionObjectType.COLLECTION_SUBTYPE.HASH_SET);
        }
        else if (object instanceof Map) {
            return new MapObjectType();
        }
        else if (object instanceof BinaryObject) {
            return BinaryUtils.TYPE_CODE.BINARY_OBJECT;
        }
        else if (objectType === 'object') {
            return new ComplexObjectType(object);
        }
        throw IgniteClientError.unsupportedTypeError(objectType);
    }