在JavaScript中,nullish coalescing运算符的浏览器支持 (??) 仅限于较新的浏览器(例如Chrome 80、Edge 80、Firefox 72)。由于TypeScript被转换为JavaScript,nullish coalescing运算符是否也会经过某种转换,类似于polyfill?
空值合并运算符是否也会像填充器一样经历某种转换?
TypeScript 会被转译成 JavaScript。目前为止,是的,空值合并会被转译,以及所有在你的 tsconfig 的 target
ES 版本中尚未支持的语法。
例如,在 TS 中:
obj.foo ?? 5;
被编译成
"use strict";
var _a;
(_a = obj.foo) !== null && _a !== void 0 ? _a : 5;
同样地,指数运算符:
3 ** 5
被转译成
Math.pow(3, 5);
如果你的目标是 ES2015 或更早版本。(乘方运算符是在 ES2016 中引入的。)否则,如果你的目标是 ES2016 或更高版本,则不会被转译。
SyntaxError: expected expression, got '.'
"的原因。=( - user21820