TypeScript
Primitives guard
İlkel türler için guard yazmayı öğrenirsin.
Primitives guard
İlkel türler için type guard yazarken typeof operatörü kullanılır. isString, isNumber, isBoolean gibi yardımcı fonksiyonlar, sık kullanılan typeof kontrollerini yeniden kullanılabilir hale getirir. Bu, kod tekrarını azaltır ve daraltmayı tutarlı kılar.
function isString(x: unknown): x is string {
return typeof x === "string";
}
function isNumber(x: unknown): x is number {
return typeof x === "number";
}
function isBoolean(x: unknown): x is boolean {
return typeof x === "boolean";
}
Birden fazla guard
Birden fazla primitive guard'ı bir arada kullanarak karmaşık daraltmalar yapılabilir. Örneğin bir değerin string veya number olduğunu kontrol etmek için isString(v) || isNumber(v) kullanılır. Her guard, kendi dalında doğru türe daraltır.
function process(v: unknown): string {
if (isString(v)) {
return v.toUpperCase(); // string
}
if (isNumber(v)) {
return v.toFixed(0); // number
}
return "unknown";
}
Uygulama Primitive guard'larla unknown işle
isString(x: unknown): x is string ve isNumber(x: unknown): x is number guard fonksiyonlarını tanımla (her biri typeof ile kontrol yapsın). process(v: unknown): string fonksiyonunu yaz: eğer isString(v) true ise v.toUpperCase() döndür; değilse eğer isNumber(v) true ise v.toFixed(0) döndür; değilse "unknown" döndür. console.log(process("hello")), console.log(process(42)), console.log(process(true)) ile sonuçları yazdır.
Örnek çözümü göster
function isString(x: unknown): x is string {
return typeof x === "string";
}
function isNumber(x: unknown): x is number {
return typeof x === "number";
}
function process(v: unknown): string {
if (isString(v)) {
return v.toUpperCase();
}
if (isNumber(v)) {
return v.toFixed(0);
}
return "unknown";
}
console.log(process("hello"));
console.log(process(42));
console.log(process(true));
Kendini test et
-
İlkel türler için type guard yazarken hangi operatör kullanılır?
Cevabı göster
typeof — İlkel türler (string, number, boolean) için typeof operatörü kullanılır; typeof x === "string" gibi bir kontrolle guard yazılır.
-
isNumber primitive guard
function isNumber(x: unknown): ____ {
return typeof x === "number";
}
Cevabı göster
function isNumber(x: unknown): x is number {
return typeof x === "number";
}
-
Primitives guard parçaları
- typeof
- ilkel tür kontrolü
- isString(x)
- string'e daraltır
- isNumber(x)
- number'a daraltır
- x is T
- predicate dönüş türü
Sıradaki ders: Özet - Type guards