TypeError: (intermediate value).mandatoryProps is not iterable

Viewed 311

I'm getting this error after using transpiled javascript from typescript code. super keyword is not working as it supposed to I'm trying to access a one property of parent class but it throws error saying TypeError: (intermediate value).mandatoryProps is not iterable

tsconfig.json

{
    "compilerOptions": {
        "module": "CommonJS",
        "declaration": true,
        "noImplicitAny": true,
        "removeComments": true,
        "preserveConstEnums": true,
        "sourceMap": true,
        "moduleResolution": "node",
        "target": "es6",
        "allowSyntheticDefaultImports": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "outDir": "src",
    },
    "include": [
        "lib/**/*.ts"
    ],
    "exclude": [
        "node_modules",
    ]
}

actual typescript file

export abstract class VMSchemaRegistryEvent extends VMEvent {
    @Transform(({ value }) =>
        Object.values(SchemaRegistryNotificationSubject).find((code) => code == value)
        || Object.values(SchemaRegistryRequestEventSubject).find((code) => code == value)
        || Object.values(SchemaRegistryErrorEventSubject).find((code) => code == value))
    schemaRegistryEventSubject: SchemaRegistryEventSubject;

    constructor(schemaRegistryEventSubject: SchemaRegistryEventSubject) {
        super(
            new VMEventIdentity(vmEventsSpecBuilder.buildSchemaRegistryEventName(schemaRegistryEventSubject),
                SCHEMA_REGISTRY_NAMESPACE_CONST))
        this.schemaRegistryEventSubject = schemaRegistryEventSubject;
    }

    static fromPlainObject(baseEvent: any): VMSchemaRegistryEvent {
        return vmEventsSpecBuilder.buildSchemaRegistryConcreteEventFromBaseEvent(baseEvent)
    }

    @Expose()
    get toPlainObject(): StringIndexedObject {
        let objectToReturn: StringIndexedObject = { ...super.toPlainObject }
        objectToReturn[VMEventPropertyKeys.SCHEMA_REGISTRY_EVENT_SUBJECT_KEY] = this.schemaRegistryEventSubject;
        return objectToReturn;
    }

    mandatoryProps: VMEventPropertyKeys[] = [...super.mandatoryProps, VMEventPropertyKeys.SCHEMA_REGISTRY_EVENT_SUBJECT_KEY]
}

export class VMEvent implements Publishable, Buildable {
    @Type(() => ObjectId)
    @Transform(({ value }) => resolveTimeBasedId(value))
    _id?: ObjectId;

    @Type(() => VMEventIdentity)
    eventIdentity: VMEventIdentity;

    constructor(eventIdentity: object | VMEventIdentity, _id?: string | ObjectId | ObjectIdLike) {
        this._id = resolveOrGenerateTimeBasedId(_id);
        if (vmEventsSpecResolver.isVMEventIdentity(eventIdentity)) {
            this.eventIdentity = eventIdentity;
        } else {
            this.eventIdentity = VMEventIdentity.fromPlainObject(eventIdentity);
        }
    }

    static fromPlainObject(eventPlain: object): VMEvent {
        return plainToClass(VMEvent, eventPlain);
    }

    @Expose()
    get toPlainObject(): StringIndexedObject {
        let objectToReturn: StringIndexedObject = {};
        objectToReturn[VMEventPropertyKeys.EVENT_IDENTITY_KEY] = this.eventIdentity.toPlainObject
        objectToReturn[VMEventPropertyKeys.OBJECT_ID_KEY] = this._id
        return objectToReturn;
    }


    mandatoryProps: VMEventPropertyKeys[] = [VMEventPropertyKeys.EVENT_IDENTITY_KEY]
}

transpiled Javascript

class VMSchemaRegistryEvent extends vmBaseEvent_1.VMEvent {
    constructor(schemaRegistryEventSubject) {
        super(new vmBaseEvent_1.VMEventIdentity(vmEventsSpecBuilder_1.vmEventsSpecBuilder.buildSchemaRegistryEventName(schemaRegistryEventSubject), vmEventCommonTypes_1.SCHEMA_REGISTRY_NAMESPACE_CONST));
        this.mandatoryProps = [...super.mandatoryProps, vmEventPropertyKeys_1.VMEventPropertyKeys.SCHEMA_REGISTRY_EVENT_SUBJECT_KEY];
        this.schemaRegistryEventSubject = schemaRegistryEventSubject;
    }
    static fromPlainObject(baseEvent) {
        return vmEventsSpecBuilder_1.vmEventsSpecBuilder.buildSchemaRegistryConcreteEventFromBaseEvent(baseEvent);
    }
    get toPlainObject() {
        let objectToReturn = { ...super.toPlainObject };
        objectToReturn[vmEventPropertyKeys_1.VMEventPropertyKeys.SCHEMA_REGISTRY_EVENT_SUBJECT_KEY] = this.schemaRegistryEventSubject;
        return objectToReturn;
    }
}
class VMEvent {
    constructor(eventIdentity, _id) {
        this.mandatoryProps = [vmEventPropertyKeys_1.VMEventPropertyKeys.EVENT_IDENTITY_KEY];
        this._id = utils_1.resolveOrGenerateTimeBasedId(_id);
        if (vmEventsSpecResolver_1.vmEventsSpecResolver.isVMEventIdentity(eventIdentity)) {
            this.eventIdentity = eventIdentity;
        }
        else {
            this.eventIdentity = VMEventIdentity.fromPlainObject(eventIdentity);
        }
    }
    static fromPlainObject(eventPlain) {
        return class_transformer_1.plainToClass(VMEvent, eventPlain);
    }
    get toPlainObject() {
        let objectToReturn = {};
        objectToReturn[vmEventPropertyKeys_1.VMEventPropertyKeys.EVENT_IDENTITY_KEY] = this.eventIdentity.toPlainObject;
        objectToReturn[vmEventPropertyKeys_1.VMEventPropertyKeys.OBJECT_ID_KEY] = this._id;
        return objectToReturn;
    }
}
0 Answers
Related