Menentukan Jenis Variabel Lingkungan
Berikan jenis yang tepat dan tervalidasi untuk process.env.
Menentukan Jenis Variabel Lingkungan adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 4 pelajaran total.
Masalah dengan process.env
Di Node, process.env bertipe Record<string, string | undefined>. Setiap variabel mungkin tidak ada, dan semuanya berupa string, sehingga akses mentah tidak aman serta tidak bertipe.
Mendeklarasikan Antarmuka Env Bertipe
Mulailah dengan mendeskripsikan konfigurasi yang benar-benar diperlukan aplikasi Anda sebagai antarmuka yang tepat, dengan tipe yang benar serta bidang wajib dan opsional.
interface Env {
PORT: number;
NODE_ENV: "development" | "production";
DATABASE_URL: string;
DEBUG?: boolean; // optional
}Membaca Nilai Mentah
Semua nilai tiba sebagai string atau undefined. Anda harus membacanya secara defensif karena kuncinya mungkin memang tidak ada.
const rawPort = process.env.PORT; // string | undefined
const rawEnv = process.env.NODE_ENV; // string | undefinedVariabel Wajib vs Opsional
Beberapa variabel harus ada agar aplikasi dapat berjalan; variabel lainnya memiliki nilai cadangan yang masuk akal. Pembantu untuk nilai wajib akan gagal dengan jelas ketika salah satunya tidak ada.
function required(name: string): string {
const v = process.env[name];
if (v === undefined) throw new Error("Missing env: " + name);
return v;
}Mengurai Angka
Variabel numerik memerlukan konversi dan validasi karena parseInt dapat menghasilkan NaN. Bungkus proses penguraian agar masukan yang salah segera ditolak.
function num(name: string): number {
const n = Number(required(name));
if (Number.isNaN(n)) throw new Error(name + " is not a number");
return n;
}Mengurai Boolean
Boolean masuk sebagai string seperti "true". Normalkan secara eksplisit, bukan dengan mengandalkan nilai kebenaran string yang tidak kosong.
function bool(name: string, def = false): boolean {
const v = process.env[name];
if (v === undefined) return def;
return v === "true" || v === "1";
}Membangun Config Bertipe
Gabungkan nilai-nilai yang telah diurai menjadi satu objek yang sesuai dengan antarmuka Env. Mulai dari sini, bagian aplikasi lainnya menggunakan config bertipe dan tidak pernah mengakses process.env secara langsung.
const env: Env = {
PORT: num("PORT"),
NODE_ENV: required("NODE_ENV") as Env["NODE_ENV"],
DATABASE_URL: required("DATABASE_URL"),
DEBUG: bool("DEBUG"),
};Membatasi Gabungan String
Untuk variabel dengan sekumpulan nilai yang tetap, lakukan validasi terhadap sekumpulan nilai tersebut agar nilai yang tidak diharapkan tidak lolos sebagai tipe literal yang salah.
function oneOf<T extends string>(name: string, allowed: readonly T[]): T {
const v = required(name) as T;
if (!allowed.includes(v)) throw new Error(name + " invalid");
return v;
}Memusatkan Akses
Ekspor satu objek env dari satu modul. Setiap pengguna mengimpornya dan memperoleh pengetikan lengkap serta satu tempat untuk mengubah logika penguraian.
export const config = env;
// elsewhere: import { config } from "./config";Menambahkan Tipe pada ProcessEnv (Opsional)
Anda dapat mendeklarasikan augmentasi modul untuk NodeJS.ProcessEnv agar akses mentah memiliki tipe, tetapi objek config yang telah diurai lebih aman karena juga melakukan validasi dan konversi.
// declare global { namespace NodeJS { interface ProcessEnv { PORT: string } } }Mengapa Objek Config Bertipe Lebih Unggul
Config yang telah diurai dan divalidasi memberikan tipe yang benar (angka, boolean, gabungan), jaminan bahwa variabel wajib tersedia, dan satu impor untuk seluruh aplikasi, bukan pembacaan process.env yang tidak aman dan tersebar.
Pemeriksaan Singkat
Pemeriksaan singkat tentang pelajaran ini.
Ringkasan
Deklarasikan antarmuka Env bertipe, lalu uraikan process.env dengan pembantu yang mengonversi dan memvalidasi (angka, boolean, serta gabungan string) dan gagal jika variabel wajib tidak ada. Ekspor satu objek config bertipe agar aplikasi tidak pernah menyentuh process.env mentah.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menentukan Jenis Variabel Lingkungan” gratis?
Ya — teks lengkap “Menentukan Jenis Variabel Lingkungan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menentukan Jenis Variabel Lingkungan”?
Berikan jenis yang tepat dan tervalidasi untuk process.env. Kamu berlatih TypeScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai TypeScript Academy?
Tidak diperlukan pengalaman sebelumnya. TypeScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Menentukan Jenis Variabel Lingkungan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran TypeScript Academy ini?
Ya. Setiap pelajaran TypeScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Menentukan Jenis Variabel Lingkungan
- Konfigurasi yang Tervalidasi Skema
- Pelapisan Konfigurasi dan Nilai Bawaan
- Rahasia dan Keamanan Jenis