Skip to content

Distinctiveness of MemoryStream and Stream #306

@wclr

Description

@wclr

Currently, MemoryStream and Stream has exactly the same API surface. Though MemoryStream is actually a descendant from Stream which is a more abstract case.

So, now:

// those are both valid cases
const stream: Stream<any> = xs.createWithMemory() // is valid
const memoryStream: MemoryStream<any> = xs.create() // is valid

Though it seems that the latter case would better be invalid in terms of type checking. If you expect MemoryStream you probably should not expect or want just Stream as an input.

Currently, I fix this:

declare module 'xstream' {
  interface MemoryStream<T> {
    // make MemoryStream distinctive from Stream
    __withMemory: true // this could be any prop, here
  }

But such distinction could be introduced in xstream by design. Maybe this issue could also relate to #304 which is runtime case for finding a distinction between types of streams.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions