Proje tamamdır. çalıştırmak için isterseniz:
npm run senkron:app
veya
npm run senkron:index
git init
git add .
git commit -m "typescript init"
git remote add origin GitHubUrl
git push -u origin master
git status
git log
git clone https://github.com/hamitmizrak/techcareer_2025_typescript_1
Nodejs : https://nodejs.org/en
Visual Studio Code(vs code) : https://code.visualstudio.com/
Git Download : https://git-scm.com/downloads/win
code .
node -v
npm -v
git -v
tsc --version //5.7.2
tsc
rm -rf node_modules
npm install
Auto Close Tag => Jun Han
Auto Complete Tag => Jun Han
Auto Rename Tag => Jun Han
Bootstrap 5 Quick Snippets => Anbuselvan Rocky
Css Snippets => Joy-yu
Git Graph => mhutchie
gitignore => CodeZombie
Live Server => Ritwick Dey
Material Icon Theme => Philipp Kief
ls -al
pwd
Mutlaka bulunduğunuz yer index.html,style.css veya README.md olan yerde olmalıyız.
npm init
npm init -y
Kodunuzun düzenli ve tutarlı olması için:
npm install eslint prettier eslint-config-prettier eslint-plugin-prettier --save-dev
Çevresel değişkenleri yönetmek için dotenv kütüphanesini ekleyebilirsiniz:
npm install dotenv
npm install dotenv --save-dev
npm install -g typescript
npm install typescript --save-dev
tsconfig dosyası için aşağıdaki komutu çalıştır:
tsc --init --locale tr
tsc --init
tsc
tsc -w (Sistem kendi compiler yapıyor yazdıklarımı kendi ekliyor.)
npm install -g nodemon
npm install nodemon --save-dev
nodemon ./src/index.js
npm install -g concurrently
npm install concurrently --save-dev
package.json=> içine
"asenkron": "concurrently \"npm run tsc_w\" \"npm run nodemon\"",
npm run asenkron
npm install -g npm-run-all
npm install npm-run-all --save-dev
package.json=> içine
"senkron": "nom-run-all --serial tsc_w nodemon",
npm run senkron
npm root (Çalıştığım projeki node_modules yolu)
npm root -g (Global projeki node_modules you (C:\Users\Hamit-Mizrak\AppData\Roaming\npm\node_modules
)
npm list (Projemizdeki bağlımlıkları gösterir)
npm list -g (Global bağlımlıkları gösterir (C:\Users\Hamit-Mizrak\AppData\Roaming\npm)
npm list --depth=0 (Çok derinlenmesine ağaç yapısında görmek istiyorsam)
npm info nodemon
npm config list (Npm yapılandırılmalarını görmek içindir)
npm config set <key> <value> e.g( npm config set registry https://registry.npmjs.org/ )
npm rebuild (Tüm bağımlıkları yeniden derleme)
npm audit (Güvenlik açıklarını tarar ve raporlar)
npm audit fix (Güvenlik sorunlarını çözmek istiyorsak)
npm login (npm hesabınıza giriş içindir)
npm pack (Node.js paketini .tgz sıkıştırma formatında ekliyor)
npm publish (ilgili pkaeti npm gönder)
npm cache clean --force (Dikkat: Eğer npm çalışmazsa yapınız. Ben mesul değilim.)
npm cache verify (Cache dorğulaması)
npm install
npm i express
npm install -g express
npm install express
npm install [email protected]
npm install express@latest
npm install express --save
npm install express --save-dev
npm uninstall -g express
npm update
npm update express
npm outdated
=> Projede eklenmiş bileşenlerin güncelliğini kontrol eder eğer güncel bir paket gelmişse bunu bize lsiteler
current: Şimdiki Yüklü Sürüm
latest: En son sürüm
Wanted: package.json'ki sürümdür
{
"main": "src/index.js",
"scripts": {
"tsc": "tsc ./src/index.ts",
"tsc_w": "tsc -w ./src/index.ts",
"nodemon": "nodemon ./src/index.js",
"asenkron": "concurrently \"npm run tsc_w\" \"npm run nodemon\"",
"senkron": "nom-run-all --serial tsc_w nodemon",
"test": "echo \"Error: no test specified\" && exit 1"
},
"devDependencies": {
"concurrently": "^9.1.2",
"nodemon": "^3.1.9",
"typescript": "^5.7.2"
}
}
TypeScript, Microsoft tarafından geliştirilmiş ve JavaScript’in bir üst kümesi olarak tasarlanmış, statik tür denetimi sağlayan bir programlama dilidir. TypeScript, JavaScript’in güçlü ve esnek yapısını korurken, büyük ölçekli uygulamalar için daha iyi yapılandırma, hataların erken tespiti ve daha iyi geliştirme deneyimi sunmayı hedefler. TypeScript kodu, doğrudan çalıştırılamaz; bir derleyici (TypeScript Compiler - tsc
) yardımıyla JavaScript’e dönüştürülmesi gerekir.
-
Statik Tip Kontrolü
TypeScript, değişkenlere ve fonksiyonlara tür eklemenize olanak tanır. Bu, kodun yazım aşamasında hataların tespit edilmesine yardımcı olur.
Örneğin:let sayi: number = 10; // Sadece sayısal değer alabilir. sayi = "merhaba"; // HATA: Type 'string' is not assignable to type 'number'.
-
Gelişmiş IDE Desteği
TypeScript, statik tür bilgisi sayesinde geliştirme ortamlarında (IDE) otomatik tamamlama, kod hatırlatma ve hata ayıklama süreçlerini kolaylaştırır. -
JavaScript ile Uyumluluk
TypeScript, JavaScript’in geriye dönük uyumlu bir süper kümesi olduğundan, mevcut JavaScript kodlarınızı TypeScript projelerine dahil edebilirsiniz. -
Tip Tanımları (Type Annotations)
Değişkenlerin, fonksiyonların ve objelerin türlerini açıkça belirtebilirsiniz.
Örneğin:function topla(a: number, b: number): number { return a + b; }
-
Interface ve Class Desteği
TypeScript, nesne tabanlı programlama için güçlü araçlar sağlar. Interface, Abstract Class ve Inheritance (Kalıtım) gibi özelliklerle daha okunabilir ve yapılandırılmış kod yazılabilir. -
Modüler Yapı
TypeScript, modüllerle çalışmayı destekler. Bu, kodunuzu bölüp düzenli bir yapıya kavuşturmanıza yardımcı olur.
Örneğin:export class Kullanici { constructor(public isim: string, public yas: number) {} }
-
Generics
TypeScript, farklı türlerle çalışabilen genel yapılar oluşturmanızı sağlar.
Örneğin:function yazdir<T>(deger: T): T { console.log(deger); return deger; } yazdir<string>("Merhaba"); yazdir<number>(123);
-
Dekoratörler (Decorators)
TypeScript, sınıflara ve fonksiyonlara meta veriler eklemek için dekoratörler sağlar. Özellikle Angular gibi çerçevelerde yaygın olarak kullanılır. -
Enum Desteği
Enum, bir grup sabit değeri temsil eden bir veri yapısıdır.enum Renk { Kirmizi, Yesil, Mavi } let renk: Renk = Renk.Kirmizi; console.log(renk); // Çıktı: 0
-
Async/Await Desteği
TypeScript, JavaScript’teki modern özellikleri destekler ve async/await ile asenkron işlemleri kolaylaştırır.
-
Büyük Projelerde Daha İyi Yönetim
Statik tip desteği ve modüler yapı sayesinde büyük ekiplerde çalışırken kodun daha anlaşılır ve sürdürülebilir olmasını sağlar. -
Daha Az Hata
Kod yazım aşamasında tür kontrolleri yapıldığından, çalışma zamanında karşılaşılan hataları azaltır. -
JavaScript’in Geleceğini Kullanma
TypeScript, ES6 ve daha yeni JavaScript özelliklerini destekler. Böylece tarayıcı uyumluluğu sağlanırken modern özelliklerden faydalanılır. -
Tip Güvenliği
Değişkenlerin ve fonksiyonların beklenmeyen türlerde kullanılmasını engeller.
-
Kurulum ve Derleme
TypeScript’i kullanmak için öncelikle kurulum yapılmalıdır.npm install -g typescript
Bir TypeScript dosyasını derlemek:
tsc dosya.ts
Bu komut,
dosya.ts
dosyasını JavaScript koduna (dosya.js
) dönüştürür. -
Türler (Types)
- Primitif Türler:
number
,string
,boolean
,null
,undefined
- Referans Türler:
array
,object
,tuple
,enum
- Primitif Türler:
-
Fonksiyonlar
Fonksiyonlar hem parametrelerin hem de dönüş değerinin türünü belirtebilir:function carp(x: number, y: number): number { return x * y; }
-
Interface
Interface, bir nesnenin yapısını tanımlamak için kullanılır.interface Kisi { isim: string; yas: number; } const kisi: Kisi = { isim: "Ali", yas: 30 };
-
Class ve Inheritance
TypeScript, sınıflar ve kalıtım gibi OOP özelliklerini destekler.class Hayvan { constructor(public isim: string) {} sesCikar(): void { console.log("Hayvan sesi"); } } class Kedi extends Hayvan { sesCikar(): void { console.log("Miyav"); } }
- Web Uygulamaları: Angular, React, ve Vue.js gibi modern JavaScript çerçevelerinde kullanılır.
- Sunucu Tarafı Uygulamaları: Node.js ile sunucu tarafında TypeScript kullanımı yaygındır.
- Hibrit Mobil Uygulamalar: Ionic ve NativeScript gibi platformlarda TypeScript tercih edilir.
- Büyük Ölçekli Kurumsal Projeler: Kodun sürdürülebilirliği ve ölçeklenebilirliği için uygundur.
- Kod güvenliği ve hataların erken tespiti.
- Daha iyi IDE desteği ve geliştirme deneyimi.
- Nesne yönelimli programlama (OOP) desteği.
- Mevcut JavaScript projeleriyle uyumluluk.
- JavaScript’e kıyasla biraz daha fazla öğrenme eğrisi gerektirir.
- Derleme adımı, geliştirme sürecini bir miktar yavaşlatabilir.
- TypeScript projeleri için ek yapılandırma gerekebilir.
Özellik | JavaScript | TypeScript |
---|---|---|
Tür Denetimi | Yok | Var |
Statik Tipler | Yok | Var |
OOP Desteği | Sınırlı | Gelişmiş |
Enum Desteği | Yok | Var |
Modülerlik | ES6 ile sınırlı | Gelişmiş |
TypeScript, modern JavaScript projelerinde daha güvenli ve sürdürülebilir kod yazmayı mümkün kılan güçlü bir dildir. Büyük projelerde karmaşıklığı yönetmek ve hataları minimize etmek isteyen ekipler için mükemmel bir çözümdür. Statik tür kontrolü, zengin IDE desteği ve güçlü OOP özellikleri ile TypeScript, yazılım geliştirme dünyasında önemli bir yer edinmiştir.
TypeScript’in tarihsel gelişimi, Microsoft’un modern web geliştirme sorunlarını çözmek ve JavaScript'in büyük ölçekli uygulamalardaki eksiklerini gidermek amacıyla başlattığı bir projedir. Bu süreç, Microsoft’un web geliştirme dünyasına olan katkısını ve TypeScript'in bugün geldiği noktayı anlamamıza yardımcı olur.
JavaScript, web dünyasında yaygın olarak kullanılan bir dil olmasına rağmen, özellikle büyük ölçekli projelerde bazı temel eksikliklere sahipti:
- Statik Tip Eksikliği: Büyük projelerde, dinamik tür yapısı nedeniyle tür hatalarını önceden tespit etmek zordu.
- Kod Yönetim Zorlukları: JavaScript'in esnek ama dağınık yapısı, büyük kod tabanlarının yönetimini zorlaştırıyordu.
- Nesne Tabanlı Programlama Eksiklikleri: JavaScript, modern nesne yönelimli programlama (OOP) için sınırlı destek sağlıyordu.
- Büyük Ekiplerde İşbirliği Zorlukları: Statik tip desteğinin olmaması, ekiplerin aynı kod üzerinde çalışmasını zorlaştırıyordu.
Microsoft, özellikle Visual Studio gibi yazılım geliştirme araçlarıyla tanınıyordu ve JavaScript ekosistemindeki bu eksiklikleri fark etti. Çözüm olarak, 2010 yılında TypeScript’in geliştirilmesine başlandı. Amaç, JavaScript'in esnekliğini korurken, geliştiricilere daha fazla araç ve özellik sunmaktı.
- 23 Ekim 2012: TypeScript’in ilk sürümü, Microsoft tarafından açık kaynaklı bir proje olarak duyuruldu.
- TypeScript 0.8: İlk sürüm, temel statik tip desteği ve sınırlı özellikler sunuyordu. JavaScript’e derlenebilen basit bir dil olarak tanıtıldı.
- Özellikler:
- Statik tip denetimi.
- Temel sınıf ve modül desteği.
- TypeScript dosyalarının (
.ts
) JavaScript’e (.js
) derlenmesi.
Bu sürüm, geliştiriciler tarafından hızla benimsendi ve JavaScript ekosistemine bir alternatif olarak görülmeye başlandı.
- Topluluk Katılımı: Açık kaynaklı olarak geliştirilmesi, topluluğun dilin gelişimine katkıda bulunmasını sağladı.
- Daha Fazla Özellik: Sınıflar ve kalıtım gibi nesne tabanlı programlama (OOP) özellikleri eklendi.
- IDE Entegrasyonu: TypeScript, Microsoft Visual Studio ile entegre olarak güçlü bir geliştirme deneyimi sundu.
- Nisan 2015: TypeScript 1.0 sürümü yayınlandı ve bu, dilin ilk kararlı sürümüydü.
- Angular İşbirliği:
- Google, Angular 2 framework’ü için TypeScript’i tercih ettiğini duyurdu.
- Bu işbirliği, TypeScript’in JavaScript dünyasında daha geniş bir kitleye ulaşmasını sağladı.
- Angular 2’nin TypeScript ile entegre olması, büyük ölçekli projelerde TypeScript’in popülerliğini artırdı.
- Eylül 2016: TypeScript 2.0 sürümü yayınlandı.
- Yeni Özellikler:
- Non-Null Types: Değişkenlerin
null
veundefined
değerlerini alıp almayacağı kontrol edilebiliyordu. - Control Flow Analysis: Kod akışını analiz ederek daha iyi tür çıkarımı sağlandı.
- Optional Parameters: Opsiyonel parametrelerin daha iyi yönetimi.
- Non-Null Types: Değişkenlerin
- TypeScript, React ve Vue.js gibi popüler JavaScript framework'leriyle daha yaygın kullanılmaya başlandı.
- Büyük teknoloji şirketleri (ör. Slack, Airbnb, Microsoft) projelerinde TypeScript’e geçiş yapmaya başladı.
- Temmuz 2018: TypeScript 3.0 sürümü yayınlandı.
- Önemli Yenilikler:
- Project References: Büyük projelerin modüler olarak yönetilmesine olanak tanıyan yeni bir özellik.
- Tuple Improvements: Tuple veri tipleri için daha fazla esneklik.
- Better Error Messages: Hata mesajları daha açıklayıcı hale getirildi.
- TypeScript, ECMAScript standardını yakından takip ederek modern JavaScript özelliklerini hızlı bir şekilde desteklemeye başladı.
- Async/Await ve Promise gibi JavaScript özellikleri TypeScript ile daha da kolaylaştı.
- Ağustos 2020: TypeScript 4.0 sürümü yayınlandı.
- Yeni Özellikler:
- Variadic Tuple Types: Tuple türlerinde daha fazla esneklik.
- Editor Improvements: Visual Studio Code ile daha iyi entegrasyon.
- Incremental Compilation: Büyük projelerde daha hızlı derleme süreleri.
- GitHub istatistiklerine göre TypeScript, en hızlı büyüyen dillerden biri haline geldi.
- Popüler Frameworkler: React, Angular, Vue.js ve NestJS gibi framework'lerde TypeScript desteği standart hale geldi.
- Büyük topluluk katkılarıyla TypeScript hızla gelişmeye devam etti.
-
Geniş Kullanım Alanı:
- Web geliştirme (React, Angular, Vue.js).
- Sunucu tarafı programlama (Node.js).
- Mobil uygulamalar (Ionic, NativeScript).
- Büyük ölçekli kurumsal projeler.
-
Topluluk ve Katkı:
- GitHub üzerinde milyonlarca kullanıcı ve aktif katkıda bulunan topluluk.
- TypeScript’in açık kaynaklı doğası, dilin hızlı gelişmesini sağladı.
-
Eğitim ve Yaygınlık:
- Çeşitli eğitim platformları (Udemy, Pluralsight, BTK Akademi) ve üniversitelerde TypeScript öğretiliyor.
- Büyük şirketlerin teknoloji yığınlarında yaygın olarak kullanılıyor.
TypeScript, Microsoft’un JavaScript dünyasında yaptığı en önemli katkılardan biridir. 2012’de mütevazı bir başlangıç yapmasına rağmen, bugün modern web geliştirme için bir standart haline gelmiştir. Statik tip desteği, güçlü IDE entegrasyonu ve topluluk katkıları sayesinde TypeScript, büyük ölçekli projelerde tercih edilen bir dil olarak JavaScript ekosisteminde güçlü bir yere sahiptir.
TypeScript'te Nesne Yönelimli Programlama (Object-Oriented Programming - OOP) ile ilgili ele alınabilecek temel konu başlıkları şunlardır:
- OOP nedir?
- TypeScript’te OOP’nin avantajları
- ES6 sınıf yapısı ile TypeScript arasındaki farklar
- Sınıf tanımı ve kullanımı
- Constructor (Yapıcı Metotlar)
- Field (Özellikler)
- Metotlar (Methods)
- Getter ve Setter Metotları
- Sınıf Özelliklerine Erişim Seviyeleri:
public
,private
,protected
- Kalıtım (Extends)
super
anahtar kelimesi ve kullanımı- Base (Temel) ve Derived (Türemiş) sınıflar
- Override edilen metotlar
- Sınıflar arası çok biçimlilik
- Dinamik ve statik çok biçimlilik
- Soyut sınıflar (Abstract Classes)
- Soyut metotlar ve türetilmiş sınıflarda uygulanması
- Sadece okunabilir alanlar (
readonly
)
- Özelliklerin gizlenmesi (
private
veprotected
) - Erişimciler (Getters ve Setters)
- Modülerlik ve verilerin korunması
- Arayüz tanımlama ve kullanımı
- Sınıflarda arayüzlerin uygulanması
- Çoklu arayüz uygulaması (Multiple Interfaces)
- Statik metotlar
- Statik özellikler
- Statik üyelerin sınıf düzeyinde kullanımı
public
,private
,protected
,readonly
kullanım farkları- Erişim belirleyicilerin örneklerle açıklanması
- Generic sınıflar
- Generic metotlar
- Generic arayüzler
- Soyut sınıflar ile arayüzler arasındaki farklar
- Hangi durumlarda hangisinin kullanılacağı
readonly
anahtar kelimesiimplements
anahtar kelimesiinstanceof
kontrolüthis
anahtar kelimesi
- TypeScript’te Singleton Tasarım Kalıbı
- Factory Method
- Observer Pattern
- Bağımlılıkların Enjeksiyonu
- Constructor Injection
- Servisler ve bağımlılık yönetimi
- Modüllerin kullanımı (
export
,import
) - Namespace tanımlama ve kullanımı
- Mixins kavramı
- Çoklu sınıf kalıtımı için mixins kullanımı
Aşağıda, TypeScript OOP konularını detaylı bir şekilde ele alarak her bir başlık için geniş çaplı bir açıklama yapılmıştır:
Nesne Yönelimli Programlama (Object-Oriented Programming - OOP), yazılım geliştirme sürecinde kodun yeniden kullanılabilirliğini, modülerliğini ve anlaşılabilirliğini artırmak için kullanılan bir programlama paradigmasıdır. Temel olarak OOP, yazılım sistemlerini gerçek dünyadaki nesneleri modelleyerek oluşturmayı hedefler. OOP'nin dört temel prensibi şunlardır:
- Kapsülleme (Encapsulation): Verilerin ve davranışların bir sınıf içinde birleştirilmesi.
- Kalıtım (Inheritance): Bir sınıfın başka bir sınıfın özelliklerini ve metotlarını devralması.
- Çok Biçimlilik (Polymorphism): Aynı işlemin farklı biçimlerde uygulanabilmesi.
- Soyutlama (Abstraction): Gereksiz detaylardan arındırarak yalnızca önemli bilgileri sunma.
TypeScript, OOP paradigmasını güçlü bir şekilde destekler. TypeScript'te OOP'nin avantajları şunlardır:
- Statik Tip Kontrolü: TypeScript, tip güvenliğini artırarak derleme zamanında hataları tespit eder. Bu, büyük projelerde hata oranını azaltır.
- ES6 ve Üzeri Özellikler: TypeScript, ES6 sınıf yapısına dayalı güçlü bir OOP desteği sunar ve ek olarak interface, abstract class gibi özellikler sağlar.
- Kodun Yeniden Kullanılabilirliği: OOP’nin sağladığı modüler yapı, TypeScript’in interface ve inheritance desteği ile daha verimli hale gelir.
- Güçlü Modül Yönetimi: TypeScript, modüller aracılığıyla kodun daha iyi organize edilmesini sağlar.
- Bakımı Kolaylaştırma: Kodun okunabilirliği ve modüler yapısı, özellikle büyük ölçekli projelerde bakım sürecini kolaylaştırır.
ES6 sınıfları ve TypeScript sınıfları, benzer yapıda olsalar da TypeScript, OOP uygulamaları için ek özellikler sunar.
Özellik | ES6 | TypeScript |
---|---|---|
Tip Kontrolü | Tip kontrolü yoktur. | Statik tip kontrolü ile hata oranı düşer. |
Erişim Belirleyiciler | public , private , protected yoktur. |
Erişim belirleyiciler kod güvenliğini artırır. |
Abstract Sınıflar | Desteklenmez. | TypeScript, soyut sınıflar tanımlayarak OOP tasarımını güçlendirir. |
Interface | Yok. | TypeScript, interface desteğiyle katı tip kuralları uygular. |
Readonly | Desteklenmez. | readonly anahtar kelimesi ile sadece okunabilir özellikler tanımlanabilir. |
Mixins | Dolaylı olarak mümkündür. | Mixins ile çoklu kalıtım TypeScript’te kolayca uygulanabilir. |
Enum Desteği | Yok. | Enum tipleri ile sabit değerler kolayca yönetilir. |
Sınıf, OOP’nin temel yapı taşıdır. TypeScript'te sınıflar, bir nesnenin özelliklerini (fields) ve davranışlarını (methods) tanımlar.
- Constructor: Nesne oluşturulurken çağrılan yapıcı metottur.
- Fields: Nesneye ait veri tutan özelliklerdir.
- Methods: Nesneye ait davranışları tanımlayan fonksiyonlardır.
- Erişim Belirleyiciler:
public
,private
,protected
gibi belirleyiciler ile özelliklerin erişim düzeyi kontrol edilir.
class User {
private id: number;
public username: string;
constructor(id: number, username: string) {
this.id = id;
this.username = username;
}
public getId(): number {
return this.id;
}
}
Kalıtım, bir sınıfın başka bir sınıfın özelliklerini ve metotlarını devralmasına olanak tanır. TypeScript'te extends
anahtar kelimesi kullanılarak kalıtım uygulanır.
class User {
constructor(public username: string) {}
}
class Admin extends User {
constructor(username: string, public privileges: string[]) {
super(username);
}
}
Çok biçimlilik, aynı metot veya özelliğin farklı şekillerde davranmasını sağlar.
class Shape {
area(): number {
throw new Error("Method not implemented.");
}
}
class Circle extends Shape {
constructor(private radius: number) {
super();
}
area(): number {
return Math.PI * this.radius ** 2;
}
}
Soyutlama, gereksiz detayları gizleyerek yalnızca önemli bilgilerin kullanılmasını sağlar. TypeScript'te soyutlama abstract
sınıflar ve metotlar ile sağlanır.
abstract class Vehicle {
abstract startEngine(): void;
}
class Car extends Vehicle {
startEngine(): void {
console.log("Car engine started.");
}
}
Kapsülleme, verilerin gizlenmesi ve yalnızca kontrollü bir şekilde erişilmesini sağlar. TypeScript'te private
ve protected
erişim belirleyicileri kullanılarak uygulanır.
class BankAccount {
private balance: number = 0;
deposit(amount: number): void {
this.balance += amount;
}
getBalance(): number {
return this.balance;
}
}
Interface, sınıfların uygulaması gereken bir sözleşmeyi tanımlar. TypeScript’te güçlü bir tip güvenliği sağlar.
interface Drivable {
start(): void;
stop(): void;
}
class Car implements Drivable {
start(): void {
console.log("Car started.");
}
stop(): void {
console.log("Car stopped.");
}
}
Statik üyeler, sınıf seviyesinde tanımlanır ve nesne oluşturulmadan erişilebilir.
class MathUtils {
static PI: number = 3.14;
static calculateCircleArea(radius: number): number {
return MathUtils.PI * radius ** 2;
}
}
TypeScript'te public
, private
, protected
, ve readonly
erişim belirleyicileri kullanılır. Bunlar özelliklere erişim kontrolü sağlar.
class User {
private id: number;
public username: string;
protected email: string;
constructor(id: number, username: string, email: string) {
this.id = id;
this.username = username;
this.email = email;
}
}
TypeScript'te generic yapılar, kodun daha esnek ve yeniden kullanılabilir olmasını sağlar.
class DataStorage<T> {
private items: T[] = [];
addItem(item: T): void {
this.items.push(item);
}
getItems(): T[] {
return this.items;
}
}
- Abstract Classes: Hem metotların hem de özelliklerin somut veya soyut bir şekilde tanımlanmasına izin verir.
- Interfaces: Sadece metotların veya özelliklerin imzasını tanımlar.
readonly
: Sadece okunabilir özellikler.implements
: Bir sınıfın bir arayüzü uyguladığını belirtir.instanceof
: Nesnenin bir sınıfa ait olup olmadığını kontrol eder.
- Modules: Kodun dışa aktarılması ve içe aktarılması için kullanılır.
- Namespaces: Kodun gruplandırılması ve isim çakışmalarının önlenmesi için kullanılır.
Mixins, bir sınıfa çoklu kalıtım benzeri davranışlar eklemek için kullanılır.
type Constructor = new (...args: any[]) => {};
function Timestamped<T extends Constructor>(Base: T) {
return class extends Base {
timestamp = new Date();
};
}
class User {
constructor(public name: string) {}
}
const TimestampedUser = Timestamped(User);
const user = new TimestampedUser("Hamit");
console.log(user.timestamp);