User-defined type guard
- TypeScript kursu
- İleri seviye
- Ders 37/57
- 4 dk
is ile özel tür koruyucu yazmayı öğrenirsin.
User-defined type guard
User-defined type guard, bir fonksiyonun dönüş türü olarak x is T biçimindeki bir koşul (predicate) kullanır. Bu, fonksiyon true döndürdüğünde TypeScript'in parametreyi T türüne daraltmasını sağlar. unknown gibi geniş türleri güvenli şekilde işlemenin yoludur.
function isString(x: unknown): x is string {
return typeof x === "string";
}
function upper(v: unknown): string {
if (isString(v)) {
return v.toUpperCase(); // v: string
}
return "";
}is ile unknown işleme
type guard'lar unknown türüyle çalışırken özellikle yararlıdır. Bir değerin yapısı bilinmediğinde, guard fonksiyonuyla güvenli daraltma yapılır. type guard'ı yeniden kullanılabilir yapmak, daraltma mantığını tek yerde toplar.
function isNumber(x: unknown): x is number {
return typeof x === "number";
}
function double(v: unknown): number {
if (isNumber(v)) {
return v * 2; // v: number
}
return 0;
}Uygulama isString guard ile unknown işle
isString(x: unknown): x is string type guard fonksiyonunu tanımla (içinde typeof x === "string" kontrolü olsun). upper(v: unknown): string fonksiyonunu yaz: eğer isString(v) true ise v.toUpperCase() döndür; değilse "" döndür. console.log(upper("hello")) ve console.log(upper(42)) ile sonuçları yazdır.
Başlangıç kodu
// isString guard fonksiyonunu tanımla (unknown parametre, string predicate)
// upper(v: unknown): string fonksiyonunu guard ile yaz
// upper("hello") ve upper(42) sonuçlarını yazdırÖrnek çözüm
function isString(x: unknown): x is string {
return typeof x === "string";
}
function upper(v: unknown): string {
if (isString(v)) {
return v.toUpperCase();
}
return "";
}
console.log(upper("hello"));
console.log(upper(42));Beklenen çıktı
HELLO
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 x is T biçimindeki dönüş türü ne işe yarar?
- Çalışma zamanında değer üretir
- T türünü otomatik oluşturur
- Fonksiyon true döndürdüğünde x'i T'ye daraltır Doğru cevap
- Fonksiyonun daha hızlı çalışmasını sağlar
Açıklama: x is T predicate'i, fonksiyon true döndürdüğünde TypeScript'e parametrenin T olduğunu söyler; if koşulunda parametre T'ye daraltılır.
2 is predicate tanımı
function isString(x: unknown): ____ {
return typeof x === "string";
}
function isString(x: unknown): x is string {
return typeof x === "string";
}
Açıklama: x is string predicate'i, fonksiyon true döndürdüğünde x'in string olduğunu TypeScript'e söyler ve daraltma sağlar.
3 Type guard parçaları
| Kavram | Anlamı |
|---|---|
x is T |
type guard predicate |
isString(x) |
true ise x string'e daraltır |
unknown türü |
guard ile güvenli daraltma |
typeof x === "string" |
çalışma zamanı kontrolü |