首页 > 解决方案 > 有没有办法从早期的空/未定义检查“信号”类型缩小到 TypeScript?

问题描述

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

我现在需要使用这些变量,但是 TypeScript 不承认我已经缩小了类型,所以它阻止我做一些事情,比如process.env.test.includes(没有可选的链接或附近的类型断言)说Object is possibly null or undefined(我启用了严格模式)。我知道在某些情况下,如果我进行类型检查,它会识别出我已经缩小了类型,但我猜这离代码还不够近,无法处理它。有什么方法可以表明我已经将类型从缩小string | null | undefined到 just string,例如,还是我必须继续使用可选的链接运算符?

标签: javascriptnode.jstypescript

解决方案


你可以使用非空断言运算符!告诉 TypeScript 你知道得更好,它永远不应该是空/未定义的:

process!.env!.test!.includes

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


推荐阅读