in operatörü
- TypeScript kursu
- İleri seviye
- Ders 26/57
- 4 dk
in operatörüyle özelliğe göre daraltma öğrenirsin.
in operatörü
in operatörü, bir özelliğin nesnede bulunup bulunmadığını kontrol eder. "swim" in animal gibi bir koşul, TypeScript'in union türü daraltmasını sağlar; özellik sadece bir üyede varsa, koşul içinde nesne o üye türe daraltılır.
interface Fish { swim(): void }
interface Bird { fly(): void }
function move(animal: Fish | Bird) {
if ("swim" in animal) {
animal.swim(); // Fish
} else {
animal.fly(); // Bird
}
}Nesne şekillerini ayırma
in operatörü, ortak bir alan yerine farklı alanlara sahip nesneleri ayırmak için idealdir. Her üyenin kendine özgü bir özelliği varsa, in ile o özelliğin kontrolü türlü daraltır. Discriminated union'larda ortak kind alanı kullanılır ama in daha esnektir.
interface Square { size: number }
interface Circle { radius: number }
function area(shape: Square | Circle): number {
if ("radius" in shape) {
return Math.PI * shape.radius ** 2; // Circle
}
return shape.size ** 2; // Square
}Uygulama in ile şekilleri ayır
Square (size: number) ve Circle (radius: number) interface'lerini tanımla. area(shape: Square | Circle): number fonksiyonunu yaz. Eğer "radius" in shape ise Math.PI * shape.radius ** 2 döndür; değilse shape.size ** 2 döndür. console.log(area({ size: 5 })) ve console.log(area({ radius: 2 })) ile sonuçları yazdır.
Başlangıç kodu
// Square (size: number) interface tanımla
// Circle (radius: number) interface tanımla
// area(shape: Square | Circle) fonksiyonunu in ile yaz
// area({ size: 5 }) ve area({ radius: 2 }) sonuçlarını yazdırÖrnek çözüm
interface Square { size: number; }
interface Circle { radius: number; }
function area(shape: Square | Circle): number {
if ("radius" in shape) {
return Math.PI * shape.radius ** 2;
}
return shape.size ** 2;
}
console.log(area({ size: 5 }));
console.log(area({ radius: 2 }));Beklenen çıktı
25 12.566370614359172
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 in operatörü neyi kontrol eder?
- Bir değerin türünü
- Bir sınıfın üst sınıfını
- Bir özelliğin nesnede var olup olmadığını Doğru cevap
- İki nesnenin aynı yapıda olup olmadığını
Açıklama: in operatörü sol taraftaki özelliğin sağ taraftaki nesnede bulunup bulunmadığını döner; bu, union türlerin farklı şekillerdeki üyelerini ayırmak için kullanılır.
2 in ile özellik kontrolü
interface Fish { swim(): void }
interface Bird { fly(): void }
function move(a: Fish | Bird) {
if (____) {
a.swim();
} else {
a.fly();
}
}
interface Fish { swim(): void }
interface Bird { fly(): void }
function move(a: Fish | Bird) {
if ("swim" in a) {
a.swim();
} else {
a.fly();
}
}
Açıklama: in operatörü "swim" özelliğinin nesnede olup olmadığını kontrol eder; özellik yalnızca Fish'te olduğundan koşul içinde a Fish'e daraltılır.
3 in operatörü parçaları
| Kavram | Anlamı |
|---|---|
in operatörü |
nesnede özellik var mı |
"swim" in animal |
Fish üyesine daraltır |
interface |
nesne şeklini tanımlar |
Discriminated union |
ortak kind alanı ile ayırma |