Microsoft/TypeScript
Auf GitHub ansehenCode generated for optional call could be optimized when the result is unused
Open
#38.835 geöffnet am 28. Mai 2020
Effort: ModerateExperience EnhancementHelp WantedSuggestion
Repository-Metriken
- Stars
- (48.455 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 2T 7h) (8 gemergte PRs in 30 T)
Beschreibung
The generated code for optional chaining is a little verbose when the "return" value of the expression is not being used. For example, when simply calling a function:
maybe.close?.()
Here is a more complete example.
The second example generates:
(_c = (_b = perhaps.maybe) === null || _b === void 0 ? void 0 : _b.close) === null || _c === void 0 ? void 0 : _c.call(_b);
But could be optimized to:
(_b = perhaps.maybe) !== null && _b !== void 0 && (_c = _b.close) !== null && _c !== void 0 && _c.call(_b);
It's not a huge difference, but it saves 8 characters for each link in the chain.
While the spec says something like: "the expression short-circuits with a return value of undefined", when the return value is meaningless, then only the "short-circuit" part is important.