Comments (3)
I like this idea!
Perhaps because it is your own idea? 🥲 Perhaps you like all your ideas? 🥲
P.S. I like my comment!
from rxjs.
@hansschenker sorry I did a 👎 without giving a reason.
The pipe operator is not using TS' variadic arguments and is using many overloads instead because it needs to have some properties that, at least on the previous TS versions, it was impossible to achieve.
You need to have a pipe function that can automatically infer the value of each Operator within the chain, as well as find incompatibilities:
from([1,2,3]).pipe(
map(v => {
// TS knows v is a number, so you can run .toFixed() on it
return v.toFixed();
}),
switchMap(v => {
// TS knows v is a string
...
})
);
There has been multiple attempts at leveraging TS variadic types to simplify that and also allow for a potentially infinite amount of arguments, but so far it has been just not possible to do. Probably the most advanced one was #6671, unfortunately he removed the gist, but it did allow an arbitrary amount of arguments and it would check that every type matches. The problem was that you had to manually fill in all of the type annotations and it would just perform the check, throwing a "is not assignable to never" in case it failed.
Your proposed solution:
// Define a type alias for variadic functions
type PipeFunctions<T> = [(source: Observable<T>) => any, ...Array<UnaryFunction<any, any>>];
is just using any
everywhere, so no inference will be done and no type checking will happen whatsoever.
from rxjs.
I like this idea!
from rxjs.
Related Issues (20)
- rxjs.dev very often inaccessible HOT 10
- export map means node always resolves CJS HOT 7
- RxJs ships generators instead of native async/await HOT 1
- bindCallback: resultSelector destructuring callback argument if it's array HOT 1
- `every` operator sending multiple values when re-entrant HOT 1
- [email protected] has peer deps?! Oops
- ObservableInput<T> should support Thennable<T>, not PromiseLike<T> HOT 1
- Delay, timer and possibly other operators have a maximum milliseconds value, even when date is passsed HOT 1
- lost stacktrace after promise is resolved HOT 1
- Teardown and error/complete messages are out of order HOT 2
- Issue with catchError HOT 1
- Synchronous emit to `switchMap` during the processing of previous emit prevents the first from unsubscribing HOT 4
- False positive in deprecation with mergMap HOT 1
- it's possible to return an array in catchError() HOT 2
- tap-complete not called for last observable inside zip HOT 2
- Interface SchedulerLike not exported from index file
- distintUntilChanged: new overload missing in bundle HOT 2
- pluck operator is a standard operator it is also available in Lodash and Ramda - It belongs into the library!
- iif subscriptions HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rxjs.