TypeScript
Assertion function
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.
Örnek çözümü göster
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"));
Kendini test et
-
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
Cevabı göster
Fonksiyon tamamlandığında x'i T'ye daraltır, değilse throw beklenir — 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.
-
asserts ile assertion
function assertString(x: unknown): ____ {
if (typeof x !== "string") throw new Error("not string");
}
Cevabı göster
function assertString(x: unknown): asserts x is string {
if (typeof x !== "string") throw new Error("not string");
}
-
Assertion function parçaları
- 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
Sıradaki ders: Primitives guard