TypeScript Academy · Pelajaran

Mentaip Pemboleh Ubah Persekitaran

Berikan process.env jenis yang tepat dan disahkan.

Pelajaran 1 daripada 413 langkah

Mentaip Pemboleh Ubah Persekitaran ialah pelajaran TypeScript Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran TypeScript Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.

Masalah dengan process.env

Dalam Node, process.env ditaip sebagai Record<string, string | undefined>. Setiap pemboleh ubah mungkin tiada, dan semuanya ialah rentetan, jadi akses mentah tidak selamat serta tidak berjenis.

Mengisytiharkan Antara Muka Env Berjenis

Mulakan dengan menerangkan konfigurasi yang sebenarnya diperlukan oleh aplikasi anda sebagai antara muka yang tepat, dengan jenis yang betul serta medan wajib dan pilihan.

interface Env {
  PORT: number;
  NODE_ENV: "development" | "production";
  DATABASE_URL: string;
  DEBUG?: boolean; // optional
}

Membaca Nilai Mentah

Semua nilai tiba sebagai rentetan atau undefined. Anda mesti membacanya secara defensif kerana kunci tersebut mungkin sememangnya tidak wujud.

const rawPort = process.env.PORT; // string | undefined
const rawEnv = process.env.NODE_ENV; // string | undefined

Pemboleh Ubah Wajib berbanding Pilihan

Sesetengah pemboleh ubah mesti wujud supaya aplikasi dapat dijalankan; yang lain mempunyai fallback yang munasabah. Pembantu untuk nilai wajib akan gagal dengan jelas apabila salah satu daripadanya tiada.

function required(name: string): string {
  const v = process.env[name];
  if (v === undefined) throw new Error("Missing env: " + name);
  return v;
}

Menghuraikan Nombor

Pemboleh ubah berangka memerlukan penukaran dan pengesahan kerana parseInt boleh menghasilkan NaN. Balut proses penghuraian supaya input yang salah ditolak serta-merta.

function num(name: string): number {
  const n = Number(required(name));
  if (Number.isNaN(n)) throw new Error(name + " is not a number");
  return n;
}

Menghuraikan Nilai Benar dan Palsu

Nilai benar dan palsu diterima sebagai rentetan seperti "true". Normalkan nilai tersebut secara jelas dan bukannya bergantung pada nilai benar bagi rentetan 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";
}

Membina Config Berjenis

Himpunkan nilai yang telah dihuraikan ke dalam satu objek yang sepadan dengan antara muka Env. Mulai sekarang, bahagian lain aplikasi menggunakan config berjenis dan tidak lagi menggunakan process.env secara terus.

const env: Env = {
  PORT: num("PORT"),
  NODE_ENV: required("NODE_ENV") as Env["NODE_ENV"],
  DATABASE_URL: required("DATABASE_URL"),
  DEBUG: bool("DEBUG"),
};

Mengehadkan Kesatuan Rentetan

Bagi pemboleh ubah yang mempunyai set nilai tetap, lakukan pengesahan terhadap set tersebut supaya nilai yang tidak dijangka tidak boleh diterima sebagai jenis 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

Eksport objek env tunggal daripada satu modul. Setiap pengguna mengimportnya, lalu memperoleh penaipan penuh dan satu tempat untuk mengubah logik penghuraian.

export const config = env;
// elsewhere: import { config } from "./config";

Melanjutkan ProcessEnv (Pilihan)

Anda boleh mengisytiharkan peluasan modul untuk NodeJS.ProcessEnv bagi memberikan jenis kepada akses mentah, tetapi objek config yang telah dihuraikan lebih selamat kerana ia turut melakukan pengesahan dan penukaran.

// declare global { namespace NodeJS { interface ProcessEnv { PORT: string } } }

Kelebihan Objek Config Berjenis

Config yang telah dihuraikan dan disahkan memberikan jenis yang betul (nombor, nilai benar/palsu, kesatuan), memastikan pemboleh ubah wajib sentiasa wujud dan menyediakan satu import untuk seluruh aplikasi, berbanding bacaan process.env yang tidak selamat dan berselerak.

Semakan Ringkas

Semakan ringkas tentang pelajaran ini.

Imbas Kembali

Isytiharkan antara muka Env berjenis, kemudian huraikan process.env dengan pembantu yang menukar dan mengesahkan nilai (nombor, nilai benar/palsu dan kesatuan rentetan), serta gagal apabila pemboleh ubah wajib tiada. Eksport satu objek config berjenis supaya aplikasi tidak pernah menyentuh process.env mentah.

Percuma untuk bermula

Pelajari TypeScript dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
101
Pelajaran
352

Soalan Lazim

Adakah pelajaran “Mentaip Pemboleh Ubah Persekitaran” percuma?

Ya — teks penuh “Mentaip Pemboleh Ubah Persekitaran” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus TypeScript Academy, tingkat taraf kepada CoddyKit PRO. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Mentaip Pemboleh Ubah Persekitaran”?

Berikan process.env jenis yang tepat dan disahkan. Anda berlatih TypeScript Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan TypeScript Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran TypeScript Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Mentaip Pemboleh Ubah Persekitaran” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran TypeScript Academy ini?

Ya. Setiap pelajaran TypeScript Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mentaip Pemboleh Ubah Persekitaran
  2. Konfigurasi Disahkan Skema
  3. Pelapisan Konfigurasi dan Nilai Lalai
  4. Rahsia dan Keselamatan Jenis
← Kembali ke TypeScript Academy