Assertion function
- TypeScript kursu
- İleri seviye
- Ders 38/57
- 4 dk
asserts ile onaylama fonksiyonlarını öğrenirsin.
Assertion function
Assertion function, asserts x is T biçiminde bir dönüş türü kullanır. Fonksiyon normal şekilde tamamlandığında TypeScript, parametreyi T türüne daraltır; eğer koşul sağlanmazsa fonksiyon throw yapar. type guard true/false döndürürken, assertion function ya daraltır ya da hata fırlatır.
function assertString(x: unknown): asserts x is string {
if (typeof x !== "string") {
throw new Error("Expected string");
}
}
function upper(v: unknown): string {
assertString(v);
return v.toUpperCase(); // v: string
}Assert ve is farkı
is ile type guard, true/false döndüren bir fonksiyondur ve if koşuluyla daraltma yapar. asserts ile assertion function ise throw yaparak veya tamam olarak daraltma yapar; if koşulu gerekmez. Assert, hata durumunda çalışmayı durdurmak istediğinde kullanışlıdır.
// type guard
function isString(x: unknown): x is string {
return typeof x === "string";
}
// assertion function
function assertString(x: unknown): asserts x is string {
if (typeof x !== "string") throw new Error("not string");
}
function upper(v: unknown): string {
assertString(v); // sonraki satırda v: string
return v.toUpperCase();
}Uygulama assertString ile unknown işle
assertString(x: unknown): asserts x is string fonksiyonunu tanımla (içinde typeof x !== "string" ise throw new Error("not string") olsun). upper(v: unknown): string fonksiyonunu yaz: önce assertString(v) çağır, sonra v.toUpperCase() döndür. console.log(upper("hello")) ile sonucu yazdır.
Başlangıç kodu
// assertString fonksiyonunu tanımla (asserts x is string, throw içersin)
// upper(v: unknown): string fonksiyonunu assertString ile yaz
// upper("hello") sonucunu yazdırÖrnek çözüm
function assertString(x: unknown): asserts x is string {
if (typeof x !== "string") {
throw new Error("not string");
}
}
function upper(v: unknown): string {
assertString(v);
return v.toUpperCase();
}
console.log(upper("hello"));Beklenen çıktı
HELLO
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 asserts x is T dönüş türü nasıl davranır?
- T türünü otomatik oluşturur
- Fonksiyon true/false döndürür
- Çalışma zamanında hiçbir şey yapmaz
- Fonksiyon tamamlandığında x'i T'ye daraltır, değilse throw beklenir Doğru cevap
Açıklama: asserts x is T dönüş türü, fonksiyon normal tamamlandığında x'i T'ye daraltır; throw yapılırsa akış durur ve daraltma gerçekleşmez. if koşulu gerekmez.
2 asserts ile assertion
function assertString(x: unknown): ____ {
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 x is string dönüş türü, fonksiyon tamamlandığında x'in string olduğunu TypeScript'e söyler; throw yapılırsa daraltma olmaz.
3 Assertion function parçaları
| Kavram | Anlamı |
|---|---|
asserts x is T |
assertion function dönüş türü |
assertString(v) |
tamamlarsa v string'e daraltır |
throw new Error |
koşul sağlanmazsa |
is ile type guard |
true/false döndürür |