See: IdentifiableMemoryPersistence

import { FilterParams } from 'pip-services3-commons-nodex';
import { PagingParams } from 'pip-services3-commons-nodex';
import { DataPage } from 'pip-services3-commons-nodex';
import { IdentifiableMemoryPersistence } from 'pip-services3-data-nodex';



export class MyMemoryPersistence
    extends IdentifiableMemoryPersistence<Dummy, string> {


    public constructor() {
        super();
    }

    private composeFilter(filter: FilterParams): (item: Dummy) => boolean {
        filter = filter != null ? filter : new FilterParams();
        let id = filter.getAsNullableString("id");
        let tempIds = filter.getAsNullableString("ids");
        let ids = tempIds != null ? tempIds.split(',') : null;
        let key = filter.getAsNullableString("key");

        return (item: Dummy) => {
            if (id != null && item.id != id)
                return false;
            if (ids != null && ids.indexOf(item.id) < 0)
                return false;
            if (key != null && item.key != key)
                return false;
            return true;
        };
    }

    public async getPageByFilter(correlationId: string, filter: FilterParams, paging: PagingParams): Promise<DataPage<Dummy>> {
        return await super.getPageByFilter(correlationId, this.composeFilter(filter), paging, null, null);
    }

    public async getOneById(correlationId: string, key: string): Promise<Dummy> {
        for(let item of this._items){
            if (item.key == key) {
                this._logger.trace(correlationId, "Found object by key=" + key);
                return item;
            }
        }

        this._logger.trace(correlationId, "Cannot find by key=" + key);
    }
}

...

let persistence = new MyMemoryPersistence();