javascript - 有没有办法从早期的空/未定义检查“信号”类型缩小到 TypeScript?
问题描述
我正在使用将一些环境变量加载到我的 Node & Express 应用程序中dotenv
,其中许多值对应用程序的功能至关重要,因此在执行任何操作之前,我会验证这些变量以确保它们被包含并且它们具有正确的类型,否则我会抛出一个错误并停止服务器启动。
我现在需要使用这些变量,但是 TypeScript 不承认我已经缩小了类型,所以它阻止我做一些事情,比如process.env.test.includes
(没有可选的链接或附近的类型断言)说Object is possibly null or undefined
(我启用了严格模式)。我知道在某些情况下,如果我进行类型检查,它会识别出我已经缩小了类型,但我猜这离代码还不够近,无法处理它。有什么方法可以表明我已经将类型从缩小string | null | undefined
到 just string
,例如,还是我必须继续使用可选的链接运算符?
解决方案
你可以使用非空断言运算符!
告诉 TypeScript 你知道得更好,它永远不应该是空/未定义的:
process!.env!.test!.includes
这当然是假设链中的任何键都可以返回 null/undefined,但您可能不需要在每个访问器上都使用运算符。
推荐阅读
- office-ui-fabric - 在 UI 中心显示 Spinner
- django - Django 从查询集中获取用户权限
- python - 为什么需要学习曲线来确定神经网络是否具有高偏差或方差?
- typo3-8.7.x - 错字3 8.7.19 - 图像始终以整页显示
- shell - 使用变量 1 在文件中查找匹配的名称并使用变量 2 shell 替换
- git - 如何检查 git commit 是否正在工作?
- javascript - ES6 Promise“待定”与“实现”
- node.js - NodeJs in other drive opens up notepad instead
- eclipse - 无法在虚拟桌面内的 Eclipse 中安装 TesttNG 插件
- java - Java程序计算我在另一个星球上的重量