如何判断打字稿,那个过程是不是未定义?

时间:2018-04-13 12:43:54

标签: javascript node.js typescript ecmascript-6

在以下代码行中:

internalWhiteList = process.env.INTERNAL_IP_WHITELIST.split( ',' )

我收到错误消息Object is possibly undefined。使用位于根目录的env文件中名为dotenv的模块将process.env个变量加载到.env

我怎么能告诉打字稿,process未定义? 这是我的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"
    ]
}

1 个答案:

答案 0 :(得分:6)

也许使用non-null assertion operator!):

internalWhiteList = process.env.INTERNAL_IP_WHITELIST!.split( ',' )

或使用if声明:

if (process.env.INTERNAL_IP_WHITELIST)
  internalWhiteList = process.env.INTERNAL_IP_WHITELIST.split( ',' )
  

这是什么意思???

如果您查看Node的type-defs,您会看到:

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

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