Re:TypeScript 3.5
by wereHamster on Wednesday May 29, 2019 @04:17PM
(#20044879)
Because you're trying to manually optimize code, which is kindof like saying 'I konw what I'm doing so TypeScript please shut up'. Take for example the `map_err` function of the `Ok` class. The function returns a different `Result`, but you're using the `… as any` trick to shut up the compiler. The correct implementation would be:
I see why you're not doing that, because that allocates a new object, and that might seem bad. Even the implementation in Rust 'allocates' a new object, but then it relies on the rust compiler to optimize that out. Here's the relevant code:
See the `Ok(t) => Ok(t)` line? That's the same as `return new Ok(…)` in the TypeScript code. Unfortunately TypeScript is not an optimizing compiler, so it's less powerful than rust. You can either use tricks (`… as any`) and give up type safety or be truthful at the expense of performance.
[ Parent
| on HN ]
Re:TypeScript 3.5
by steveklabnik on Wednesday May 29, 2019 @04:21PM
(#20044928)
To be clear, the option type in rust does not heap allocate at all; no need for the compiler to optimize things away.