Özet - Strict null
- TypeScript kursu
- İleri seviye
- Ders 48/57
- 4 dk
Strict null ile güvenli bir konfigürasyon yükleyici yazarsın.
Özet - Strict null
Strict null, definite assignment ve non-null assertion birlikte kullanılarak güvenli bir konfigürasyon yükleyici yazılır. strictNullChecks null değerleri yakalar; definite assignment geç başlayan atamalarda ! kullanır; non-null assertion değer null olmadığından emin olunan yerlerde ! ile daraltır.
class Config {
host!: string;
port!: number;
load(env: { HOST: string | null; PORT: string | null }): void {
this.host = env.HOST!;
this.port = Number(env.PORT!);
}
}Uygulama Konfigürasyon yükleyici yaz
Config sınıfını tanımla: host!: string ve port!: number definite assignment özellikleriyle. load(env: { HOST: string | null; PORT: string | null }): void yöntemi yaz: this.host = env.HOST! ve this.port = Number(env.PORT!) ata. Bir Config örneği oluştur, c.load({ HOST: "localhost", PORT: "8080" }) çağır, sonra console.log(c.host) ve console.log(c.port) ile sonuçları yazdır.
Başlangıç kodu
// Config sınıfını tanımla (host ve port definite assignment ile)
// load yöntemi yaz (env parametresiyle, non-null assertion kullan)
// Config örneği oluştur, load çağır, sonuçları yazdırÖrnek çözüm
class Config {
host!: string;
port!: number;
load(env: { HOST: string | null; PORT: string | null }): void {
this.host = env.HOST!;
this.port = Number(env.PORT!);
}
}
const c = new Config();
c.load({ HOST: "localhost", PORT: "8080" });
console.log(c.host);
console.log(c.port);Beklenen çıktı
localhost 8080
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Definite assignment (!) ile non-null assertion (!) arasındaki fark nedir?
- Non-null assertion çalışma zamanı kontrolü yapar
- İkisi de aynıdır
- Definite assignment özellik bildiriminde, non-null assertion ifadede kullanılır Doğru cevap
- Definite assignment yalnızca sınıflarda kullanılır
Açıklama: Definite assignment, sınıf özellik bildiriminde ! ile özelliğin sonra atanacağını söyler; non-null assertion ise ifadeden sonra ! ile değerin null olmadığını assertion yapar.
2 Config host ata
class Config {
host!: string;
port!: number;
load(env: { HOST: string | null; PORT: string | null }): void {
this.host = ____;
this.port = Number(env.PORT!);
}
}
class Config {
host!: string;
port!: number;
load(env: { HOST: string | null; PORT: string | null }): void {
this.host = env.HOST!;
this.port = Number(env.PORT!);
}
}
Açıklama: env.HOST! ifadesi non-null assertion yapar; HOST null olabilir ama assertion ile string'e daraltılır ve host özelliğine atanır.
3 Strict null özet eşleştirmesi
| Kavram | Anlamı |
|---|---|
strictNullChecks |
null ve undefined'ı diğer türlerden ayırır |
definite assignment (!) |
özellik bildiriminde |
non-null assertion (!) |
ifadede |
akış analizi |
if koşulunda daraltma |