3 ms·
In all fairness, in other languages this usually looks like def getUser() : Future[User]
by continuational 7y ago
In all fairness, in other languages this usually looks like
def getUser() : Future[User]
- noncoml 7y agoNot in dynamic languages, ie JavaScript
- littlestymaar 7y agoIt is. It's not visible if you the types aren't written, but under the hood, that's the type of things like this.
- noncoml 7y agoEhm. No. JavaScript will return a Promise. It’s “type” is Object as pretty much anything else in JavaScript.
- endless1234 7y agoBut isn't a Promise for all intents and purposes the same as a Future here?
- marcoms 7y agoYes, but I think they are emphasising that only a promise will be returned. Any further type information is not given
- wwright 7y agoCheck out structural typing. I would say it’s the type system JavaScript uses for non-primitive values. The “dynamic” appearance is just that JavaScript doesn’t center the type system in its UX.
- cerebellum42 7y agoEven in Rust, it only looks like that in this very specific use case and is usually completely hidden from the programmer. It's the desugared output of a library. Usually it would look like this in Rust: fn get_user(&self) -> impl Future<Output = User>; This isn't exactly the same functionally, but for most use cases it works just fine. The difference is that this uses static dispatch instead of dynamic dispatch and therefore can't support dynamically returning two different structs that both implement Future, it has to be one type.