Javascript 如何告诉typescript,该进程不是未定义的?

Javascript 如何告诉typescript,该进程不是未定义的?,javascript,node.js,typescript,ecmascript-6,Javascript,Node.js,Typescript,Ecmascript 6,在以下代码行中: internalWhiteList = process.env.INTERNAL_IP_WHITELIST.split( ',' ) 我收到一个错误信息,对象可能未定义env变量使用位于根目录下名为.env文件的模块加载到process.env 我怎么能告诉typescript,进程不是未定义的? 这是我的tsconfig.json: { "compilerOptions": { "target": "esnext", "out

在以下代码行中:

internalWhiteList = process.env.INTERNAL_IP_WHITELIST.split( ',' )
我收到一个错误信息,
对象可能未定义
env
变量使用位于根目录下名为
.env
文件的模块加载到
process.env

我怎么能告诉typescript,
进程
不是未定义的? 这是我的
tsconfig.json

    {
    "compilerOptions": {
        "target": "esnext",
        "outDir": "../dist",
        "allowJs": true,
        "module": "commonjs",
        "noEmitOnError": false,
        "noImplicitAny": false,
        "strictNullChecks": true,
        "sourceMap": true,
        "pretty": false,
        "removeComments": true,
        "listFiles": false,
        "listEmittedFiles": false
    },
    "exclude": [
        "node_modules",
        "test/",
        "**/*.spec.ts"
    ]
}
可能有一个(
):

或者使用
if
语句:

if (process.env.INTERNAL_IP_WHITELIST)
  internalWhiteList = process.env.INTERNAL_IP_WHITELIST.split( ',' )
这是什么意思

如果查看节点的类型defs,您会看到:

export interface ProcessEnv {
    [key: string]: string | undefined;
}

这是因为
string | undefined
意味着
INTERNAL\u IP\u WHITELIST
可能未定义,在这种情况下
undefined.split()
是一个错误,因此您需要断言或防止它未定义(如此答案所示).

Compile for node作为目标?@Bergi我正在使用
esnext
作为目标进行编译。更新了我的问题。看起来您需要节点
键入
@我编辑Jatt以添加链接:。“对象可能未定义”错误与
过程无关。但是,
process.env.INTERNAL\u IP_WHITELIST
可以是
字符串
未定义
@Jatt我在答案中添加了一个解释(它不适合评论)。你可以随意编辑。
export interface ProcessEnv {
    [key: string]: string | undefined;
}