前言

在做node后端服务开发的时候,使用环境变量已经是基操了,但是在ts中默认的环境变量是第一个非常宽泛的类型:

interface Dict<T> {
    [key: string]: T | undefined;
}

interface ProcessEnv extends Dict<string> {
  /**
   * Can be used to change the default timezone at runtime
   */
  TZ?: string;
}

这就导致我们自定义的环境变量是没有属性提示的,有点难受,所以需要我们自己去声明一个同名的interface去合并类型,从而实现属性提示。

教程

我们创建一个env.d.ts文件,比如存放在src/types目录下。

export {};

declare global {
    namespace NodeJS {
        interface ProcessEnv {
            /** 模式 */
            NODE_ENV: string;
            ...自定义
        }
    }
}

需要注意,不知道为什么一定要有一个export导出,这个类型文件才会生效。

然后在tsconfig.json中将类型目录加入。

{
    "compilerOptions": {
        "typeRoots": ["./src/types"]
    }
}

此时再回去通过process.env调用属性就有提示了。

分类: TypeScript 标签: 环境变量envTypeScriptNodeJsProcessEnv

评论

全部评论 1

  1. wu先生
    wu先生
    Google Chrome Windows 10
    不日月觉历。

目录