0Pricing
TypeScript Academy · レッスン

環境変数とConfigの型付け

検証済みのConfigモジュールでprocess.envに型を付けます。

「環境変数とConfigの型付け」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。

ようこそ

process.envに型を付けることで、環境変数の不足や型の誤りによる実行時エラーを防げます。

問題点

process.envの値は常にstring | undefinedです。確認せずにアクセスするとバグの原因になります。
const port = process.env.PORT; // string | undefined
// server.listen(port); // could be undefined!

process.envのモジュール拡張

グローバル宣言ファイルでProcessEnvを拡張し、既知の環境変数に型を付けます。
declare global {
  namespace NodeJS {
    interface ProcessEnv {
      PORT: string;
      DATABASE_URL: string;
      NODE_ENV: 'development' | 'staging' | 'production';
    }
  }
}

設定モジュールパターン

型付きの設定モジュールを作成し、環境変数を検証してエクスポートします。
function requireEnv(key: string): string {
  const val = process.env[key];
  if (!val) throw new Error(`Missing env var: ${key}`);
  return val;
}
export const config = {
  port: parseInt(requireEnv('PORT')),
  dbUrl: requireEnv('DATABASE_URL'),
};

環境変数の検証にZodを使う

起動時にZodで環境変数を検証し、包括的なランタイムチェックを行います。
import { z } from 'zod';
const envSchema = z.object({
  PORT: z.string().transform(Number),
  DATABASE_URL: z.string().url(),
  NODE_ENV: z.enum(['development', 'production']),
});
export const env = envSchema.parse(process.env);

TypeScriptでdotenvを使う

process.envにアクセスする前に、dotenvで.envファイルを読み込みます。
import 'dotenv/config';
// Or:
import dotenv from 'dotenv';
dotenv.config();

環境変数への厳格なアクセス

アプリケーションコードでは、環境変数には必ず設定モジュール経由でアクセスし、process.envに直接アクセスしてはいけません。

環境ごとの設定

NODE_ENVを使用して、環境固有の設定ファイルを読み込みます。
const envFile = `.env.${process.env.NODE_ENV ?? 'development'}`;
dotenv.config({ path: envFile });

ログでのシークレットのマスキング

シークレットを含む設定オブジェクトを決してログに出力しないでください。機密性の高いフィールドをマスキングします。
console.log({ ...config, dbPassword: '***', apiKey: '***' });

型安全なフィーチャーフラグ

フィーチャーフラグの環境変数に型を付けます。
const flags = {
  enableBeta: process.env.ENABLE_BETA === 'true',
  logLevel: (process.env.LOG_LEVEL ?? 'info') as 'debug' | 'info' | 'warn',
};

環境変数を使ったテスト

.env.testファイルを使用し、テストのセットアップで読み込みます。
// tests/setup.ts
process.env.DATABASE_URL = 'sqlite:///:memory:';
process.env.NODE_ENV = 'test';

クイックチェック

拡張を行わない場合、`process.env.PORT`のTypeScriptでの型は何ですか?

まとめ

モジュール拡張によってProcessEnvを拡張するか、Zodの設定モジュールを使用して、起動時に環境変数の型付けと検証を行います。環境変数には必ず設定モジュール経由でアクセスし、直接アクセスしてはいけません。

よくある質問

「環境変数とConfigの型付け」レッスンは無料ですか?

はい。「環境変数とConfigの型付け」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。

「環境変数とConfigの型付け」で何を学びますか?

検証済みのConfigモジュールでprocess.envに型を付けます。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

TypeScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「環境変数とConfigの型付け」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このTypeScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Node.jsでTypeScriptをセットアップする
  2. ExpressのRequestとResponseに型を付ける
  3. 型付きMiddlewareとError Handler
  4. 環境変数とConfigの型付け
← TypeScript Academyに戻る