WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

bug: Problem with the object prototype when piping #12

@hrajchert

Description

@hrajchert

When we use a custom operator like the tap defined below, the input loses its prototype

import { Task, UnknownError } from '@ts-task/task';
import { map } from '@ts-task/task/dist/lib/src/operators';

const tap = <T, E> (fn: (t: T) => unknown) => {
    return function (input: Task<T, E>): Task<T, E | UnknownError> {
        return input.map(val => {
            fn(val);
            return val;
        });
    };
};

Task.resolve(1)
    .pipe(
        map(x => x + 1),
        tap(x => console.log('waaa', x))
    )
    .fork(
        err => console.error('buu', err),
        val => console.log(val)
    );
buu Error: UnknownError (input.map is not a function)
    at fns.reduce (/Users/test/myapp/node_modules/@ts-task/task/dist/task.umd.js:194:40)
    at Array.reduce (<anonymous>)
    at Task [as resolver] (/Users/test/myapp/node_modules/@ts-task/task/dist/task.umd.js:189:33)
    at Promise (/Users/test/myapp/node_modules/@ts-task/task/dist/task.umd.js:42:22)
    at new Promise (<anonymous>)
    at Task.fork (/Users/test/myapp/node_modules/@ts-task/task/dist/task.umd.js:41:13)
    at Object.<anonymous> (/Users/test/myapp/dist/index.js:28:6)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
--------------
TypeError: input.map is not a function
    at /Users/test/myapp/dist/index.js:7:22
    at fns.reduce (/Users/test/myapp/node_modules/@ts-task/task/dist/task.umd.js:191:28)
    at Array.reduce (<anonymous>)
    at Task [as resolver] (/Users/test/myapp/node_modules/@ts-task/task/dist/task.umd.js:189:33)
    at Promise (/Users/test/myapp/node_modules/@ts-task/task/dist/task.umd.js:42:22)
    at new Promise (<anonymous>)
    at Task.fork (/Users/test/myapp/node_modules/@ts-task/task/dist/task.umd.js:41:13)
    at Object.<anonymous> (/Users/test/myapp/dist/index.js:28:6)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions