TypeScript 中的 null 合并运算符 (??) 是否比 JavaScript 的浏览器支持更多?

jso*_*onp 4 javascript browser-support typescript

在 JavaScript 中,浏览器对无效合并运算符(??) 的支持仅限于较新的浏览器(例如 Chrome 80、Edge 80、Firefox 72)。由于 TypeScript 被转换为 JavaScript,空合并运算符是否也经历了某种转换,有点像 polyfill?

Cer*_*nce 9

空合并运算符是否也经过某种转换,有点像 polyfill?

TypeScript 被转换为 JavaScript。就目前而言,是的,将转译无效合并,以及target您的 tsconfig.js 中的 ES 版本尚不支持的所有其他语法。

例如,在 TS 中:

obj.foo ?? 5;
Run Code Online (Sandbox Code Playgroud)

被转译为

"use strict";
var _a;
(_a = obj.foo) !== null && _a !== void 0 ? _a : 5;
Run Code Online (Sandbox Code Playgroud)

同样,求幂运算符:

3 ** 5
Run Code Online (Sandbox Code Playgroud)

被转译为

Math.pow(3, 5);
Run Code Online (Sandbox Code Playgroud)

如果您的目标是 ES2015 或更早版本。(求幂运算符是在 ES2016 中引入的。)否则,如果你的目标是 ES2016 或更高版本,它不会被转译。

  • 感谢您的礼貌、乐于助人和描述。 (3认同)