CodeBlanks Logo Icon CodeBlanks

asserts is

asserts x is T yazımını öğrenirsin.

asserts is

asserts x is T dönüş türü, bir assertion function'unun imzasını belirtir. Fonksiyon gövdesi koşul sağlanmazsa throw yapmalıdır; normal tamamlandığında TypeScript parametre x'i T'ye daraltır. if koşuluna gerek yoktur; çağrıdan sonraki satırlarda x T olarak ele alınır.

function assertString(x: unknown): asserts x is string {
  if (typeof x !== "string") {
    throw new Error("not a string");
  }
}

function process(v: unknown): string {
  assertString(v);
  return v.toUpperCase();  // v: string
}

Daraltma çağrı sonrası

assertString(v) çağrısından sonraki satırlarda v string olarak daraltılır. if koşulu kullanmaya gerek yoktur; bu, kodu type guard'a kıyasla daha doğal akışlı yapar. Throw mekanizması, hatalı durumlarda çalışmayı açıkça durdurur.

function assertNumber(x: unknown): asserts x is number {
  if (typeof x !== "number") throw new Error("not a number");
}

function double(v: unknown): number {
  assertNumber(v);
  return v * 2;  // v: number, if gerekmez
}

Uygulama assertNumber ile unknown işle

assertNumber(x: unknown): asserts x is number fonksiyonunu tanımla (içinde typeof x !== "number" ise throw new Error("not a number") olsun). double(v: unknown): number fonksiyonunu yaz: assertNumber(v) çağır, sonra v * 2 döndür. console.log(double(21)) ile sonucu yazdır.

Başlangıç kodu

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

// double(v: unknown): number fonksiyonunu assertNumber ile yaz

// double(21) sonucunu yazdır

Örnek çözüm

index.ts
function assertNumber(x: unknown): asserts x is number {
  if (typeof x !== "number") {
    throw new Error("not a number");
  }
}

function double(v: unknown): number {
  assertNumber(v);
  return v * 2;
}

console.log(double(21));

Beklenen çıktı

42

Soru ve cevaplar

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

1 asserts x is T imzasına sahip bir fonksiyon gövdesi ne yapmalıdır?

  • T değerini döndürmelidir
  • console.log yapmalıdır
  • Koşul sağlanmazsa throw yapmalıdır Doğru cevap
  • true/false döndürmelidir

Açıklama: asserts x is T imzasındaki fonksiyon, koşul sağlanmazsa throw yapmalı; normal tamamlandığında TypeScript x'i T'ye daraltır. return gerekmez.

2 asserts anahtar kelimesi

Soru
function assertString(x: unknown): ____ x is string {
  if (typeof x !== "string") throw new Error("not string");
}
Cevap
function assertString(x: unknown): asserts x is string {
  if (typeof x !== "string") throw new Error("not string");
}

Açıklama: asserts anahtar kelimesi, dönüş türünün bir assertion function olduğunu belirtir; tamamlandığında daraltma yapar, gövdenin throw yapmasını bekler.

3 asserts is parçaları

Kavram Anlamı
asserts x is T assertion imzası
throw yapma koşul sağlanmazsa gövdede
çağrı sonrası daraltma if gerekmez
assertString(v) sonraki satırda v string

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