asserts is
- TypeScript kursu
- İleri seviye
- Ders 41/57
- 4 dk
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
// 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
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
function assertString(x: unknown): ____ x is string {
if (typeof x !== "string") throw new Error("not string");
}
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 |