Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
TypeScript'te Decorator'lar: Standart TC39 Decorator'ları ve context Object'i
TS 5.0 ile gelen standart decorator'ları; method, class, field ve accessor decorator'larını, context object'ini, neden erasable olmadıklarını ve eski experimentalDecorators ayarından farklarını görüyoruz.
TypeScript'te Branded Tipler: UserId ile OrderId'yi Karıştırmamak
Structural typing'in aynı şekle sahip ama anlamı farklı değerleri ayıramadığı yerde brand'leri, doğrulama fonksiyonlarıyla brand üretmeyi ve unique symbol ile daha sağlam bir Brand yardımcısı yazmayı görüyoruz.
TypeScript'te Variance ve Atanabilirlik: Covariance, Contravariance ve strictFunctionTypes
Atanabilirliğin yönünü, dönüş tiplerinde covariance'ı, parametrelerde contravariance'ı, strictFunctionTypes'ı, method bivariance'ı, array'lerin açığını ve in/out variance annotation'larını görüyoruz.
TypeScript'te Recursive Tipler: JSON, DeepReadonly ve DeepPartial
Kendine referans veren type'ları, recursive bir JSON type'ını, fonksiyon ve array tuzaklarıyla DeepReadonly ve DeepPartial'ı, recursive conditional type'ları ve TS2589 sınırını görüyoruz.
TypeScript'te Template Literal Types: String'leri Tip Seviyesinde Kurmak
Template literal type'larla union çarpımını, ${number} gibi kalıpları, Uppercase ve Capitalize intrinsic'lerini, event adı türetmeyi, mapped type ile key üretmeyi ve infer ile route ayrıştırmayı görüyoruz.
TypeScript'te Mapped Types: Bir Type'tan Yeni Bir Type Üretmek
Mapped type syntax'ını, homomorphic mapped type'ların readonly ve ? modifier'larını nasıl taşıdığını, + ve - ile modifier yönetimini, as ile key remapping ve never ile filtrelemeyi görüyoruz.
TypeScript'te infer: Conditional Type İçinde Tip Yakalamak
infer ile kalıba uyan type'tan parça yakalamayı, ReturnType, Parameters ve Awaited'ı kendimiz yazmayı, tuple ve string kalıplarını, infer constraint'lerini ve overload tuzağını görüyoruz.
TypeScript'te Conditional Types: Tip Seviyesinde Karar Vermek
T extends U ? X : Y syntax'ını, extends'in atanabilirlik anlamını, union'larda distributive davranışı, [T] ile distribution'ı kapatmayı ve never ile union filtrelemeyi tsc çıktılarıyla görüyoruz.
JavaScript ve Ufuktaki Özellikler: TC39 Aşamaları, Temporal ve using
Bir özelliğin TC39 aşamalarından geçip dile girişini, Date'in sorunlarını çözen Temporal'ı (PlainDate, ZonedDateTime, Duration) ve using ile kaynak yönetimini Safari desteği notlarıyla öğreniyoruz.
JavaScript Web Components: Custom Elements, Shadow DOM ve Slot
customElements.define ile kendi HTML etiketimizi yazıyor, lifecycle callback'lerini ve observedAttributes'u öğreniyor, Shadow DOM, template ve slot ile framework'süz bir yıldızlı puan component'i kuruyoruz.
JavaScript Canvas ile Çizim: 2D Context, Animasyon ve Piksel Verisi
Canvas'ın 2D context'iyle şekil, path, gradient ve metin çiziyor, görselleri piksel piksel işliyor, requestAnimationFrame ile animasyon döngüsü kuruyor ve retina ekranlarda bulanıklığı çözüyoruz.
JavaScript ile Dosya ve İkili Veri: File, Blob, ArrayBuffer ve Typed Array'ler
Kullanıcıdan input ve sürükle-bırak ile dosya alıyor, Blob ve File'ı okuyor, ArrayBuffer, typed array ve DataView ile byte'lara iniyor, ES2026'nın base64/hex method'larını ve dosya indirmeyi öğreniyoruz.