CodeBlanks Logo Icon CodeBlanks

asserts defined

asserts x is defined ile null kontrolünü öğrenirsin.

asserts defined

asserts x is defined özel bir assertion biçimidir; null ve undefined dışındaki tüm türlere daraltır. Bir değerin var olduğunu garanti altına almak için kullanılır; özellikle opsiyonel veya nullable alanlarla çalışırken yararlıdır.

function assertDefined(x: unknown): asserts x is defined {
  if (x === null || x === undefined) {
    throw new Error("value is null or undefined");
  }
}

const maybe: string | null = "hello";
assertDefined(maybe);
maybe.toUpperCase();  // string, null daraltıldı

Nullable alanlarla kullanım

asserts x is defined, nullable (örneğin string | null) bir değeri string'e daraltmak için kullanılır. Opsiyonel özelliklerle çalışırken, değerin var olduğunu garanti altına alır ve sonraki kod null kontrolü olmadan güvenli kullanım sağlar.

interface User {
  email: string | null;
}

function getEmail(u: User): string {
  assertDefined(u.email);
  return u.email;  // string, null daraltıldı
}

Uygulama assertDefined ile nullable email işle

assertDefined(x: unknown): asserts x is defined fonksiyonunu tanımla (içinde x === null || x === undefined ise throw new Error("null or undefined") olsun). User interface'ini email: string | null özelliğiyle tanımla. getEmail(u: User): string fonksiyonunu yaz: assertDefined(u.email) çağır, sonra u.email döndür. console.log(getEmail({ email: "a@b.com" })) ile sonucu yazdır.

Başlangıç kodu

index.ts
// assertDefined fonksiyonunu tanımla (asserts x is defined, throw ile)

// User interface tanımla (email: string | null)

// getEmail(u: User): string fonksiyonunu assertDefined ile yaz

// getEmail({ email: "a@b.com" }) sonucunu yazdır

Örnek çözüm

index.ts
function assertDefined(x: unknown): asserts x is defined {
  if (x === null || x === undefined) {
    throw new Error("null or undefined");
  }
}

interface User {
  email: string | null;
}

function getEmail(u: User): string {
  assertDefined(u.email);
  return u.email;
}

console.log(getEmail({ email: "a@b.com" }));

Beklenen çıktı

a@b.com

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 asserts x is defined ne yapar?

  • Değeri undefined yapar
  • Türünü string yapar
  • Çalışma zamanında değer üretir
  • null ve undefined dışındaki türlere daraltır Doğru cevap

Açıklama: asserts x is defined, null ve undefined dışındaki tüm türlere daraltır; nullable bir değeri non-null türüne indirir ve sonraki kodu güvenli kılar.

2 asserts x is defined

Soru
function assertDefined(x: unknown): ____ {
  if (x === null || x === undefined) throw new Error("null or undefined");
}
Cevap
function assertDefined(x: unknown): asserts x is defined {
  if (x === null || x === undefined) throw new Error("null or undefined");
}

Açıklama: asserts x is defined dönüş türü, fonksiyon tamamlandığında x'in null veya undefined olmadığını TypeScript'e söyler.

3 asserts defined parçaları

Kavram Anlamı
asserts x is defined null ve undefined daraltır
nullable değer defined ile string'e indirir
x === null || x === undefined gövde kontrolü
opsiyonel özellik defined ile güvenli erişim

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