有没有一种方法可以通过较早的null / undefined检查将“信号”类型缩小到TypeScript?

时间:2020-04-10 22:48:01

标签: javascript node.js typescript

我正在使用dotenv将一些环境变量加载到我的Node&Express应用程序中,其中许多值对于应用程序的功能至关重要,因此在执行任何操作之前,我先验证这些变量以确保将其包括在内并且它们具有正确的类型,否则我会抛出错误并停止服务器的启动。

我现在需要在一行中使用这些变量,但是TypeScript无法识别出我已经缩小了类型的范围,因此它阻止了我执行诸如process.env.test.includes(没有可选的链结或附近的类型断言)之类的操作{ 1}}(我启用了严格模式)。我知道在某些情况下,如果我进行类型检查,就会认识到我已经缩小了类型,但是我猜想这与代码的距离不够远,无法进行选择。例如,是否有任何方法表明我已经将类型从Object is possibly null or undefined缩小到string | null | undefined,还是必须继续使用可选的链接运算符?

1 个答案:

答案 0 :(得分:2)

您可以使用non-null assertion operator !告诉TypeScript您更了解,它永远不能为null / undefined:

process!.env!.test!.includes

这当然是假设链中的任何键都可以返回null / undefined,但是您可能不需要在每个访问器上都使用运算符。