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 https://github.com/staltz/xstream/issues/304 which is runtime case for finding a distinction between types of streams.
Currently,
MemoryStream
andStream
has exactly the same API surface. ThoughMemoryStream
is actually a descendant fromStream
which is a more abstract case.So, now:
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 justStream
as an input.Currently, I fix this:
But such distinction could be introduced in
xstream
by design. Maybe this issue could also relate to https://github.com/staltz/xstream/issues/304 which is runtime case for finding a distinction between types of streams.