TypeScript Nesneleri Yeni Başlayanlar İçin Basitleştirildi

Nesneler, JavaScript ve TypeScript'in temel bir parçasıdır. İlgili verileri ve işlevleri bir araya getirmenize olanak tanır ve kodunuzda gerçek dünya varlıklarını modellemenin bir yolunu sunar. TypeScript, JavaScript nesnelerini tür güvenliğiyle geliştirerek kodunuzu daha öngörülebilir ve bakımı daha kolay hale getirir. Bu kılavuz, yeni başlayanlar için TypeScript nesneleri kavramını basitleştirecektir.

TypeScript'te Nesne Nedir?

object anahtar-değer çiftlerinin bir koleksiyonudur, burada anahtarlar dizelerdir (veya Semboller) ve değerler herhangi bir türde olabilir. TypeScript'te, nesnenin belirli bir yapıyı takip etmesini sağlayarak, türleri veya arayüzleri kullanarak bir nesnenin şeklini tanımlayabilirsiniz.

TypeScript'te Basit Nesneleri Tanımlama

TypeScript'te basit bir nesne tanımlayarak başlayalım. Bu, JavaScript'te nesneleri tanımlama şeklinize benzer ancak tür güvenliği ek avantajıyla.

Temel Nesne Örneği

TypeScript'te basit bir nesneyi tanımlamanın yolu şöyledir:

const person: { name: string; age: number } = {
  name: "Alice",
  age: 25
};

console.log(person.name); // Output: Alice
console.log(person.age);  // Output: 25

Bu örnekte, person nesnesinin iki özelliği vardır: name (string türünde) ve age (number türünde). TypeScript, nesnenin bu yapıya uymasını sağlayacaktır.

Nesne Yapısını Tanımlamak İçin Arayüzleri Kullanma

interface, TypeScript'te bir nesnenin şeklini tanımlayan güçlü bir özelliktir. Arayüzler, nesnelerin belirli bir yapıya uymasını sağlayarak kodunuz içinde sözleşmeleri tanımlamanın bir yolunu sunar.

Bir Arayüz Tanımlama

Bir nesnenin yapısını tanımlamak için bir arayüzün nasıl kullanılacağı şöyledir:

interface Person {
  name: string;
  age: number;
}

const person: Person = {
  name: "Bob",
  age: 30
};

console.log(person.name); // Output: Bob
console.log(person.age);  // Output: 30

Bu örnekte, Person arayüzü bir kişi nesnesinin yapısını tanımlar. person değişkeni bu yapıya uymalıdır, aksi takdirde TypeScript bir hata verecektir.

Nesnelerdeki İsteğe Bağlı Özellikler

TypeScript, ? sembolünü kullanarak nesnelerde isteğe bağlı özellikler tanımlamanıza olanak tanır. Nesneler oluşturulurken isteğe bağlı özellikler atlanabilir ve bu da nesne yapılarını nasıl tanımlayacağınız konusunda esneklik sağlar.

İsteğe Bağlı Özelliklerle Örnek

İşte phoneNumber özelliğinin isteğe bağlı olduğu bir örnek:

interface Employee {
  name: string;
  age: number;
  phoneNumber?: string; // Optional property
}

const employee1: Employee = {
  name: "John",
  age: 28
};

const employee2: Employee = {
  name: "Doe",
  age: 32,
  phoneNumber: "123-456-7890"
};

console.log(employee1.phoneNumber); // Output: undefined
console.log(employee2.phoneNumber); // Output: 123-456-7890

Bu örnekte, employee1 bir phoneNumber özelliğine sahip değilken, employee2 özelliğine sahiptir. Her ikisi de Employee arayüzüne göre geçerlidir.

Nesnelerdeki Salt Okunur Özellikler

TypeScript, özelliklerin readonly olmasını sağlayarak nesne oluşturulduktan sonra değiştirilmelerini önler. Bu, değiştirilemez nesneler oluşturmak için yararlıdır.

Salt Okunur Özelliklerle Örnek

Salt okunur özelliklerin nasıl tanımlanacağı aşağıda açıklanmıştır:

interface Car {
  readonly brand: string;
  model: string;
}

const car: Car = {
  brand: "Toyota",
  model: "Camry"
};

// car.brand = "Honda"; // Error: Cannot assign to 'brand' because it is a read-only property

car.model = "Corolla"; // Valid
console.log(car.model); // Output: Corolla

Bu örnekte, brand özelliği readonly olarak işaretlenmiştir. Bunu değiştirmeye yönelik herhangi bir girişim derleme zamanı hatasıyla sonuçlanacaktır.

TypeScript'te İç İçe Nesneler

TypeScript nesneleri iç içe yerleştirilebilir, yani bir nesne başka bir nesneyi özellik olarak içerebilir. Bu karmaşık veri yapılarında yaygındır.

İç İçe Nesnelerin Örneği

İşte iç içe geçmiş bir nesnenin örneği:

interface Address {
  street: string;
  city: string;
  zipCode: string;
}

interface User {
  name: string;
  age: number;
  address: Address; // Nested object
}

const user: User = {
  name: "Emily",
  age: 27,
  address: {
    street: "123 Main St",
    city: "New York",
    zipCode: "10001"
  }
};

console.log(user.address.city); // Output: New York

Bu örnekte, User arayüzü iç içe geçmiş bir Address nesnesine sahiptir. user nesnesi bu yapıyı takip ederek iç içe geçmiş özelliklere erişime izin verir.

Çözüm

TypeScript'teki nesneler, tür tanımları, isteğe bağlı özellikler, salt okunur özellikler ve iç içe geçmiş yapılar nedeniyle düz JavaScript nesnelerinden daha güçlü ve esnektir. Nesneleri arayüzler kullanarak tanımlayarak daha sağlam ve hatasız kodlar oluşturabilirsiniz. Tür güvenliğinin ve yapılandırılmış verilerin tüm gücünden yararlanmak için projelerinizde TypeScript nesnelerini kullanmaya başlayın.