CodeBlanks Logo Icon CodeBlanks

Özet - Assertion functions

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

index.ts
// 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

index.ts
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

Soru
function handle(input: unknown): string {
  assertDefined(input);
  ____
  return input.toUpperCase();
}
Cevap
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

İleri seviye bölümündeki tüm dersler