process.env.NODE_ENV的TypeScript定义?

TypeScript definitions for process.env.NODE_ENV?

是否有一个带有用于" process"变量的TypeScript定义的项目,以使用process.env.NODE_ENV?在任何地方都找不到。


节点8的更新:

现在env在DefinitelyTyped中声明为ProcessEnv

1
2
3
4
5
env: ProcessEnv;

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

TypeScript 2支持节点的npm包类型定义。当前它使用DefinitivelyTyped node.d.ts.

1
npm install --save-dev @types/node

节点8之前的版本:

进程env在DefinitelyTyped node.d.ts.

中声明为any

1
env: any;


\\'process \\'变量的定义可以在默认的node.js d.ts中找到,方法是从绝对类型中键入并添加到您的types.json中,如下所示:

1
"node":"github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts"

我不认为特定的NODE_ENV变量有任何定义。因为这只是一个约定(Express链接广泛使用),所以node.js本身并不关心该特定环境变量。


仅在使用前添加process.env.NODE_ENV

1
2
3
4
5
declare var process : {
  env: {
    NODE_ENV: string
  }
}


在TypeScript 3中添加节点定义

使用通过npm / yarn的"绝对类型"中的类型:

1
2
3
4
5
6
7
8
# Install the latest
npm install --save-dev @types/node
# or
yarn add @types/node --dev

# To install the right types for your version of node (e.g. 12 here)
npm install --save-dev @types/node@^12
yarn add @types/node@^12 --dev

在可用类型的情况下,对象process.env应该在代码中可用。

扩展process.env

您可以使用声明合并将新值添加到process.env。在您的项目中创建一个新的d.ts文件,然后添加:

1
2
3
4
5
6
7
declare global {
  namespace NodeJS {
    interface ProcessEnv {
      NODE_ENV?: string
    }
  }
}

这将使您编写process.env.NODE_ENV。我建议保留?除非您已验证它是否已在库中的某个位置进行设置。


1
2
3
4
5
6
declare namespace NodeJS {
  interface ProcessEnv {
    [key: string]: string | undefined
    NODE_ENV?: 'development' | 'production' | 'test'
  }
}

将上面的代码放入文件global.d.ts


如果您在VSCode中遇到此错误,也许您只需要重新启动它即可。