Primitives guard
- TypeScript kursu
- İleri seviye
- Ders 39/57
- 4 dk
İ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.
Başlangıç kodu
// isString ve isNumber guard fonksiyonlarını tanımla (typeof ile)
// process(v: unknown): string fonksiyonunu guard'larla yaz
// process("hello"), process(42), process(true) sonuçlarını yazdırÖrnek çözüm
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));Beklenen çıktı
HELLO 42 unknown
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 İlkel türler için type guard yazarken hangi operatör kullanılır?
- instanceof
- in
- typeof Doğru cevap
- as
Açıklama: İlkel türler (string, number, boolean) için typeof operatörü kullanılır; typeof x === "string" gibi bir kontrolle guard yazılır.
2 isNumber primitive guard
function isNumber(x: unknown): ____ {
return typeof x === "number";
}
function isNumber(x: unknown): x is number {
return typeof x === "number";
}
Açıklama: x is number predicate'i, fonksiyon true döndürdüğünde x'in number olduğunu TypeScript'e söyler ve daraltma sağlar.
3 Primitives guard parçaları
| Kavram | Anlamı |
|---|---|
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ü |