Mentaip Pemboleh Ubah Persekitaran
Berikan process.env jenis yang tepat dan disahkan.
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 | undefinedPemboleh 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.
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
- Mentaip Pemboleh Ubah Persekitaran
- Konfigurasi Disahkan Skema
- Pelapisan Konfigurasi dan Nilai Lalai
- Rahsia dan Keselamatan Jenis