TypeScript中的nullish coalescing运算符(??)在浏览器中的支持是否比JavaScript更好?

4
在JavaScript中,nullish coalescing运算符的浏览器支持 (??) 仅限于较新的浏览器(例如Chrome 80、Edge 80、Firefox 72)。由于TypeScript被转换为JavaScript,nullish coalescing运算符是否也会经过某种转换,类似于polyfill?

为什么不使用“查看源代码”来找出答案呢? - tadman
TypeScript实际上并没有任何浏览器支持;它在构建时被转换为JavaScript。它们是否被转换成其他内容取决于您如何定位TypeScript构建。 - Pointy
1个回答

13

空值合并运算符是否也会像填充器一样经历某种转换?

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 或更高版本,则不会被转译。


3
感谢你的礼貌、乐于助人和详细说明。 - jsonp
有没有办法修补那些不支持空值合并运算符但可以运行GreaseMonkey脚本的浏览器?我相信这个新潮的东西是我在StackOverflow上遇到"SyntaxError: expected expression, got '.'"的原因。=( - user21820
可以使用自己的用户脚本来修复它,但是会更加复杂。 - CertainPerformance
@CertainPerformance:我更喜欢使用用户脚本的解决方案。我只需要一个高效修改脚本的例子,因为我之前尝试过,但它崩溃了,所以我不知道是因为脚本太长还是其他原因。对于这个问题有任何建议或推荐的参考资料吗?谢谢! - user21820
我无法让用户脚本按照我上面所要求的方式运行,但最近SO停止依赖该新功能,因此... - user21820
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接