Ortam Değişkenlerinin Türünü Belirleme
process.env için kesin ve doğrulanmış bir tür tanımlayın.
Ortam Değişkenlerinin Türünü Belirleme, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.
process.env Sorunu
Node ortamında process.env, Record<string, string | undefined> olarak türlendirilir. Her değişken eksik olabilir ve tüm değerler dizedir; bu nedenle ham erişim güvenli değildir ve tür bilgisi taşımaz.
Tür Bilgili Env Arayüzünü Tanımlama
Önce uygulamanızın gerçekten ihtiyaç duyduğu yapılandırmayı, doğru türlerle ve zorunlu ile isteğe bağlı alanları belirterek kesin bir arayüz olarak tanımlayın.
interface Env {
PORT: number;
NODE_ENV: "development" | "production";
DATABASE_URL: string;
DEBUG?: boolean; // optional
}Ham Değerleri Okuma
Tüm değerler dize veya undefined olarak gelir. Anahtarlar yalnızca mevcut olmayabileceğinden onları temkinli biçimde okumalısınız.
const rawPort = process.env.PORT; // string | undefined
const rawEnv = process.env.NODE_ENV; // string | undefinedZorunlu ve İsteğe Bağlı Değişkenler
Bazı değişkenlerin uygulamanın çalışması için mevcut olması gerekir; diğerleri için uygun geri dönüş değerleri vardır. Zorunlu değerler için kullanılan bir yardımcı, biri eksik olduğunda açıkça hata verir.
function required(name: string): string {
const v = process.env[name];
if (v === undefined) throw new Error("Missing env: " + name);
return v;
}Sayıları Ayrıştırma
Sayısal değişkenlerin dönüştürülmesi ve doğrulanması gerekir; çünkü parseInt sonucu NaN olabilir. Hatalı girdinin hemen reddedilmesi için ayrıştırma işlemini sarmalayın.
function num(name: string): number {
const n = Number(required(name));
if (Number.isNaN(n)) throw new Error(name + " is not a number");
return n;
}Boolean Değerleri Ayrıştırma
Boolean değerleri "true" gibi dizeler olarak gelir. Boş olmayan bir dizenin doğru kabul edilmesine güvenmek yerine bunları açıkça normalleştirin.
function bool(name: string, def = false): boolean {
const v = process.env[name];
if (v === undefined) return def;
return v === "true" || v === "1";
}Tür Bilgili Yapılandırmayı Oluşturma
Ayrıştırılmış değerleri Env arayüzüyle eşleşen tek bir nesnede birleştirin. Bundan sonra uygulamanın geri kalanı tür bilgili yapılandırmayı kullanır ve process.env'e doğrudan erişmez.
const env: Env = {
PORT: num("PORT"),
NODE_ENV: required("NODE_ENV") as Env["NODE_ENV"],
DATABASE_URL: required("DATABASE_URL"),
DEBUG: bool("DEBUG"),
};Dize Birleşimlerini Sınırlandırma
Sabit bir değer kümesine sahip değişkenler için bu kümeye göre doğrulama yapın; böylece beklenmeyen bir değer yanlış bir değişmez tür olarak içeri sızamaz.
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;
}Erişimi Merkezileştirme
Tek bir modülden tek env nesnesini dışa aktarın. Her tüketici bu nesneyi içe aktararak tam tür bilgisi ve ayrıştırma mantığını değiştirmek için tek bir yer elde eder.
export const config = env;
// elsewhere: import { config } from "./config";ProcessEnv'i Genişletme (İsteğe Bağlı)
Ham erişimi türlendirmek için NodeJS.ProcessEnv üzerinde modül genişletmesi tanımlayabilirsiniz; ancak ayrıştırılmış bir yapılandırma nesnesi daha güvenlidir, çünkü aynı zamanda doğrulama ve dönüştürme de yapar.
// declare global { namespace NodeJS { interface ProcessEnv { PORT: string } } }Tür Bilgili Yapılandırma Nesnesi Neden Daha İyi
Ayrıştırılmış ve doğrulanmış bir yapılandırma; doğru türleri (sayılar, Boolean değerleri, birleşimler), zorunlu değişkenlerin kesinlikle mevcut olmasını ve uygulamanın tamamı için tek bir içe aktarmayı sağlar. Böylece dağınık ve güvenli olmayan process.env okumalarına gerek kalmaz.
Hızlı Kontrol
Bu dersle ilgili hızlı bir kontrol.
Özet
Tür bilgili bir Env arayüzü tanımlayın, ardından process.env'i sayıları, Boolean değerlerini ve dize birleşimlerini dönüştürüp doğrulayan yardımcılarla ayrıştırın; zorunlu değişkenler eksik olduğunda hata verin. Uygulamanın ham process.env'e hiç dokunmaması için tür bilgili tek bir config nesnesini dışa aktarın.
Sıkça Sorulan Sorular
“Ortam Değişkenlerinin Türünü Belirleme” dersi ücretsiz mi?
Evet — “Ortam Değişkenlerinin Türünü Belirleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.
“Ortam Değişkenlerinin Türünü Belirleme” dersinde ne öğreneceğim?
process.env için kesin ve doğrulanmış bir tür tanımlayın. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Ortam Değişkenlerinin Türünü Belirleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Ortam Değişkenlerinin Türünü Belirleme
- Şema Doğrulamalı Yapılandırma
- Yapılandırma Katmanları ve Varsayılanlar
- Gizli Bilgiler ve Tür Güvenliği