← 中文资源

简体中文版本

从环境变量加载校验配置

用 Zod 模式从环境变量加载校验配置,带默认值。

阅读英文原文

示例说明

用 Zod 模式从环境变量加载校验配置,带默认值。本示例属于配置管理场景,提供可直接复制使用的typescript代码片段,附带边界条件与使用注意事项。

技术要点

  • z.coerce.number 把字符串环境变量转数字
  • enum 校验枚举值防拼写错误
  • default 提供默认值缺省时兜底

代码解读

上述代码实现了从环境变量加载校验配置的核心逻辑。用 Zod 模式从环境变量加载校验配置,带默认值。代码中包含输入校验、核心算法和结果返回三个部分。关键在于正确处理边界情况,例如空输入、非法参数和并发场景。z.coerce.number 把字符串环境变量转数字,enum 校验枚举值防拼写错误。这些设计确保代码在生产环境中的健壮性。

使用建议

在实际项目中使用本示例时,建议先理解从环境变量加载校验配置的适用场景与限制条件。default 提供默认值缺省时兜底。根据具体业务需求调整参数配置,并编写单元测试覆盖正常路径与边界情况。本代码片段可直接集成到现有项目中,或作为参考实现自行扩展。

代码示例

import{z}from'zod';const configSchema=z.object({port:z.coerce.number().int().min(1).max(65535).default(3000),nodeEnv:z.enum(['development','staging','production']).default('development'),logLevel:z.enum(['debug','info','warn','error']).default('info'),databaseUrl:z.string().url(),redisUrl:z.string().url().optional()});export type Config=z.infer<typeof configSchema>;export function loadConfig(env:Record<string,string|undefined>=process.env):Config{return configSchema.parse({port:env.PORT,nodeEnv:env.NODE_ENV,logLevel:env.LOG_LEVEL,databaseUrl:env.DATABASE_URL,redisUrl:env.REDIS_URL});}