Modül dersleri (1/2)
Takma Adlar ve Arayüzler yazın
TypeScript'te karmaşık nesnelerin yapısını iki temel yolla tanımlayabiliriz: Arayüzler (interface) veya Tür Takma Adları (type) kullanarak. Her ikisi de bir nesnenin veya veri yapısının "şeklini" tanımlamaya yarar ancak aralarında birkaç temel fark vardır.
Arayüzler (interface)
Arayüz, bir nesnenin yapısına ilişkin bir sözleşmeyi tanımlar. Nesne şekillerini ve genel API'leri genişletilebilir bir şekilde tanımlayan standart araçtır.
interface Book {
title: string;
pages: number;
author?: string; // Optional property (can be omitted)
}
const myBook: Book = {
title: 'The Lord of the Rings',
pages: 1200,
};Soru işareti (?) bir özelliği isteğe bağlı olarak işaretler. myBook nesnesi, author özelliğini atlasa bile geçerlidir.
Takma Adları Yazın (type)
Tür takma adı, yeni bir adı ilkel türler, birleşimler, tanımlama grupları veya tüm nesne yapıları dahil olmak üzere mevcut herhangi bir türle ilişkilendirmenize olanak tanır.
type Point = {
x: number;
y: number;
};
const coordinates: Point = { x: 10, y: 20 };Temel Farklılıklar: Uzatma ve Beyan Birleştirmesi
interface ve type çoğu sıradan kullanım durumu için birbirinin yerine kullanılabilir olsa da, iki kritik farklılık gösterirler:
1. Genişletilebilirlik (Kalıtım)
Arayüzler extends anahtar sözcüğü kullanılarak genişletilir:
interface User {
username: string;
}
interface Admin extends User {
privileges: string[];
}Tür takma adları extends kullanılarak genişletilemez ancak kesişme operatörü (&) kullanılarak birleştirilebilirler:
type User = {
username: string;
};
type Admin = User & {
privileges: string[];
};2. Beyanın Birleştirilmesi
Aynı kapsamdaki aynı ada sahip birden fazla arayüz, derleyici tarafından otomatik olarak birleştirilir:
interface User {
name: string;
}
interface User {
email: string;
}
// Now User has both 'name' and 'email'!Bu davranış tür takma adları tarafından desteklenmez: aynı type öğesinin iki kez bildirilmesi derleme zamanı hatasını tetikler.
Kendin dene
Alıştırma 1: Kullanıcı Arayüzü
Bir kullanıcı nesnesini tanımlayan Kullanıcı adında bir arayüz tanımlayın. Arayüz şunları içermelidir: sayı olarak id, dize olarak kullanıcı adı ve isteğe bağlı dize olarak e-posta.
İpucu göster
İsteğe bağlı olarak işaretlemek için email?: dizesini kullanın.
3 denemeden sonra çözüm mevcut
Alıştırma 2: Point2D Türü Takma Adı
X ve y koordinatlarına (her ikisi de sayı) sahip iki boyutlu bir noktayı temsil eden Point2D adlı bir tür takma adı oluşturun.
İpucu göster
Sözdizimi türünü kullanın Point2D = { x: number; y: sayı; };
3 denemeden sonra çözüm mevcut
Alıştırma 3: Arayüzleri Genişletme
Ürün adında, kimliği (sayı) ve fiyatı (sayı) içeren bir arayüz tanımlayın. Daha sonra, Product'ı genişleten ve İndirimCode (string) adlı isteğe bağlı bir özellik ekleyen İndirimliÜrün adlı bir arayüz tanımlayın.
İpucu göster
Alanları devralmak için extends Product'ı kullanın ve indirimKodu?: dizesini ekleyin.
3 denemeden sonra çözüm mevcut
Alıştırma 4: Sunucu Yapılandırması
Bir sunucuya ilişkin yapılandırma nesnesini temsil eden ServerConfig adında bir tür takma adı tanımlayın. Şunları içermelidir: ana bilgisayar (dize), bağlantı noktası (sayı) ve isteğe bağlı bir boole alanı olarak useHttps.
İpucu göster
Sözdizimi türünü kullanın ServerConfig = { host: string; bağlantı noktası: sayı; HTTPS'yi kullan?: boolean; }.
3 denemeden sonra çözüm mevcut