首页 > 解决方案 > 为什么要比较 void 0 而不是 undefined?(TypeScript 空值合并运算符)

问题描述

如果您不熟悉新的 TypeScript“空值合并运算符”(??),请参阅此处:https ://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#nullish-聚结

你可以想到这个功能 - ?? null运算符 - 作为处理or时“回退”到默认值的一种方式undefined

我刚刚在一些代码中第一次使用它,我注意到将运算符转换为 JavaScript 的方式有些奇怪。使用TypeScript Playground,您可以看到以下代码:

const message: string = process.env.FOO ?? 'bar';

被翻译成这样:

"use strict";
var _a;
const message = (_a = process.env.FOO, (_a !== null && _a !== void 0 ? _a : 'bar'));

由于??测试 null 或 undefined 值,为什么要比较 tovoid 0而不是undefined?除了可能void 0只是比undefined. 还有比这更好的理由吗?

标签: javascripttypescript

解决方案


推荐阅读