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.