0Pricing
TypeScript Academy · Ders

Tür Koruyucuları

Tür koruyucularını kullanarak unknown veya any türleriyle güvenli biçimde çalışın

Tür Koruyucuları, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.

Tür Koruyucularına Giriş

Tür Koruyucuları

Bir sonraki derse hoş geldiniz! Bu derste, çalışma zamanında türleri daraltmanızı sağlayan ve TypeScript'in güçlü bir özelliği olan tür koruyucularını öğreneceksiniz. Tür koruyucuları, kodunuzun tür güvenli olmasını ve hatalardan kaçınmasını sağlar. Haydi inceleyelim!

Tür Koruyucuları — resim 1

Tür Koruyucuları Nedir?

Tür Koruyucuları Nedir?

Tür koruyucusu, çalışma zamanında bir değişkenin türünü belirleyen bir işlev veya yapıdır. TypeScript'in belirli bir kod bloğu içinde bir değişkenin türünü daraltmasını sağlar.

Örnek:

Görev: Bir değerin sayı olup olmadığını denetlemek için tür koruyucusu kullanan bir işlev yazın.

function isString(value: unknown): boolean {
  return typeof value === "string";
}

function printLength(value: unknown): void {
  if (isString(value)) {
    console.log(value.length); 
// TypeScript knows 'value' is a string here
  } else {
    console.log("Value is not a string");
  }
}

printLength("Hello"); 
// Output: 5
printLength(42); 
// Output: Value is not a string

İlkel Değerlerin Türünü Denetleme

İlkel Değerlerde typeof Kullanımı

Dizeler, sayılar ve mantıksal değerler gibi ilkel değerlerin türünü denetlemek için typeof işleçini kullanabilirsiniz.

Örnek:

Görev: Bir işlevde dize ile sayı arasındaki farkı belirlemek için typeof kullanın.

function printValue(value: string | number): void {
  if (typeof value === "string") {
    console.log(`String value: ${value}`);
  } else {
    console.log(`Number value: ${value}`);
  }
}

printValue("Hello"); 
// Output: String value: Hello
printValue(42); 
// Output: Number value: 42

Sınıf Örneklerini Denetleme

Sınıflar için instanceof Kullanımı

instanceof işleci, bir nesnenin belirli bir sınıfın örneği olup olmadığını denetler. Örnek:

Görev: Bir işlevde farklı sınıf örneklerini ele almak için instanceof kullanın.

class Dog {
  bark(): void {
    console.log("Woof!");
  }
}

class Cat {
  meow(): void {
    console.log("Meow!");
  }
}

function makeSound(animal: Dog | Cat): void {
  if (animal instanceof Dog) {
    animal.bark();
  } else {
    animal.meow();
  }
}

let dog = new Dog();
let cat = new Cat();
makeSound(dog); 
// Output: Woof!
makeSound(cat); 
// Output: Meow!

Özel Tür Koruyucuları Kullanma

Özel Tür Koruyucuları Kullanma

value is Type dönüş türünü kullanarak özel tür koruyucusu işlevleri oluşturabilirsiniz. Örnek:

interface Car {
  make: string;
  model: string;
}

interface Bike {
  brand: string;
  type: string;
}

function isCar(vehicle: Car | Bike): vehicle is Car {
  return (vehicle as Car).make !== undefined;
}

function printVehicle(vehicle: Car | Bike): void {
  if (isCar(vehicle)) {
    console.log(`Car: ${vehicle.make} ${vehicle.model}`);
  } else {
    console.log(`Bike: ${vehicle.brand} ${vehicle.type}`);
  }
}

let car: Car = { make: "Toyota", model: "Corolla" };
let bike: Bike = { brand: "Yamaha", type: "Sport" };

printVehicle(car); 
// Output: Car: Toyota Corolla
printVehicle(bike);
 // Output: Bike: Yamaha Sport

Ayırt Edici Birleşimler

Ayırt Edici Birleşimler

Ayırt edici birleşimler, türler arasındaki farkı belirlemek için ortak bir özellik kullanır. Örnek:

interface Circle {
  kind: "circle";
  radius: number;
}

interface Rectangle {
  kind: "rectangle";
  width: number;
  height: number;
}

type Shape = Circle | Rectangle;

function calculateArea(shape: Shape): number {
  if (shape.kind === "circle") {
    return Math.PI * shape.radius ** 2;
  } else {
    return shape.width * shape.height;
  }
}

let circle: Circle = { kind: "circle", radius: 5 };
let rectangle: Rectangle = { kind: "rectangle", width: 10, height: 20 };

console.log(calculateArea(circle)); 
// Output: 78.53981633974483
console.log(calculateArea(rectangle)); 
// Output: 200

Eksiksizlik Denetimi

Eksiksizlik Denetimi

Eksiksizlik denetimi, ayırt edici bir birleşimdeki olası tüm durumların ele alınmasını sağlar. Örnek:

function getShapeInfo(shape: Shape): string {
  switch (shape.kind) {
    case "circle":
      return `Circle with radius ${shape.radius}`;
    case "rectangle":
      return `Rectangle with dimensions ${shape.width}x${shape.height}`;
    default:
      // This line ensures all cases are handled
      const _exhaustiveCheck: never = shape;
      return _exhaustiveCheck;
  }
}

Yaygın Hatalar

Yaygın Hatalar

Tür koruyucularını kullanırken yapılan bazı yaygın hatalar şunlardır:

  • Birleşim türündeki tüm durumları eklemeyi unutmak.
  • Koşullu mantığın tüm dallarında tür koruyucusu kullanmamak.
  • Uygun denetimler yapmadan türleri dönüştürmek için as kullanmak.

İpucu: Belirli özelliklerine veya metotlarına erişmeden önce türleri daraltmak için her zaman tür koruyucularını kullanın!

Harika İş Çıkardınız!

Harika İş Çıkardınız!

Tebrikler! Çalışma zamanında türleri daraltmak ve tür güvenliğini sağlamak için TypeScript'te tür koruyucularını nasıl kullanacağınızı öğrendiniz. Tür koruyucuları, karmaşık birleşim türlerini ele almak ve sağlam, hatasız kod oluşturmak için gereklidir. Bir sonraki derste gelişmiş eşlemeli türleri inceleyeceğiz. Kod yazmaya devam edelim!

Tür Koruyucuları — resim 10

Sıkça Sorulan Sorular

“Tür Koruyucuları” dersi ücretsiz mi?

Evet — “Tür Koruyucuları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.

“Tür Koruyucuları” dersinde ne öğreneceğim?

Tür koruyucularını kullanarak unknown veya any türleriyle güvenli biçimde çalışın TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Tür Koruyucuları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Jenerikler
  2. Tür Takma Adları ve Arayüzler
  3. Yardımcı Türler
  4. Tür Koruyucuları
← TypeScript Academy Sayfasına Dön