Özet - Assertion functions
- TypeScript kursu
- İleri seviye
- Ders 44/57
- 4 dk
Assertion fonksiyonlarıyla güvenli bir istek işleyici yazarsın.
Özet - Assertion functions
Assertion fonksiyonları, bir istek işleyicide güvenli doğrulama katmanı oluşturur. asserts x is defined ile null kontrolü, asserts x is T ile tür kontrolü yapılır. Birden fazla assertion çağrısı, isteğin tüm gereksinimleri karşıladığını garanti eder; sonraki kod güvenle çalışır.
function assertDefined(x: unknown): asserts x is defined {
if (x === null || x === undefined) throw new Error("missing");
}
function assertString(x: unknown): asserts x is string {
if (typeof x !== "string") throw new Error("not string");
}
function handle(input: unknown): string {
assertDefined(input);
assertString(input);
return input.toUpperCase();
}Uygulama İstek işleyici yaz
assertDefined(x: unknown): asserts x is defined fonksiyonunu tanımla (x === null || x === undefined ise throw new Error("missing")). assertString(x: unknown): asserts x is string fonksiyonunu tanımla (typeof x !== "string" ise throw new Error("not string")). handle(input: unknown): string fonksiyonunu yaz: assertDefined(input) çağır, assertString(input) çağır, sonra input.toUpperCase() döndür. console.log(handle("hello")) ile sonucu yazdır.
Başlangıç kodu
// assertDefined fonksiyonunu tanımla (asserts x is defined, throw ile)
// assertString fonksiyonunu tanımla (asserts x is string, throw ile)
// handle(input: unknown): string fonksiyonunu iki assertion ile yaz
// handle("hello") sonucunu yazdırÖrnek çözüm
function assertDefined(x: unknown): asserts x is defined {
if (x === null || x === undefined) {
throw new Error("missing");
}
}
function assertString(x: unknown): asserts x is string {
if (typeof x !== "string") {
throw new Error("not string");
}
}
function handle(input: unknown): string {
assertDefined(input);
assertString(input);
return input.toUpperCase();
}
console.log(handle("hello"));Beklenen çıktı
HELLO
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir istek işleyicide neden birden fazla assertion çağrısı yapılır?
- Tek bir assertion yeterlidir
- Her doğrulama adımı için ayrı assertion, kodu güvenli ve düzenli tutar Doğru cevap
- Assertion'lar çalışma zamanında atlanır
- Çalışma zamanı hızını artırır
Açıklama: Her doğrulama adımı (null kontrolü, tür kontrolü, vs.) için ayrı assertion çağrısı yapmak, kontrolü modüler kılar; her adım tek sorumluluk taşır ve kod güvenli kalır.
2 handle fonksiyonunda assertion zinciri
function handle(input: unknown): string {
assertDefined(input);
____
return input.toUpperCase();
}
function handle(input: unknown): string {
assertDefined(input);
assertString(input);
return input.toUpperCase();
}
Açıklama: assertDefined ile null kontrolünden sonra assertString(input) ile tür kontrolü yapılır; sonraki satırda input string olarak güvenle kullanılır.
3 Assertion functions özet eşleştirmesi
| Kavram | Anlamı |
|---|---|
asserts x is defined |
null ve undefined daraltır |
asserts x is T |
T türüne daraltır |
throw yapma |
koşul sağlanmazsa |
Assertion zinciri |
çoklu doğrulama |