Microsoft/TypeScript

Code generated for optional call could be optimized when the result is unused

オープン

#38,835 opened on 2020/05/28

 (3 件のコメント) (0 件のリアクション) (0 人の担当者)TypeScript (13,395 件のフォーク)batch import
Effort: ModerateExperience EnhancementHelp WantedSuggestion

Repository metrics

Stars
 (108,860 個のスター)
PR merge metrics
 (平均マージ 6d 17h) (30d で 9 merged PRs)

説明

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.

コントリビューターガイド