Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
JavaScript Event Loop Derinlemesine: Task, Microtask ve Rendering Sırası
Task ve microtask queue'larını, promise ve queueMicrotask'ın yerini, rendering adımında requestAnimationFrame'in ne zaman çalıştığını ve uzun task'ların sayfayı neden dondurduğunu çıktı sırası bulmacalarıyla çözüyoruz.
JavaScript OOP Desenleri: Inheritance mı Composition mı? Factory Function ve Mixin
Inheritance'ın bedelini, composition ile davranış birleştirmeyi, factory function ve mixin'leri, closure ile #private arasındaki seçimi, JavaScript'e uyan SOLID ilkelerini ve ne zaman class yazmak gerektiğini konuşuyoruz.
JavaScript Object Koruma ve Immutability: Property Descriptor, seal ve freeze
Property descriptor'ları, Object.defineProperty'nin sinsi varsayılanlarını, preventExtensions, seal ve freeze farkını, sığ ve derin dondurmayı ve object'leri değiştirmeden güncelleme desenlerini örneklerle görüyoruz.
JavaScript Prototype Zinciri: Object'ler Birbirinden Nasıl Miras Alır?
[[Prototype]] bağlantısını, zincirde property aramasını, __proto__ ile Object.getPrototypeOf farkını, constructor function, Object.create ve class'ın altında yatan prototype mekanizmasını konsolda adım adım çözüyoruz.
TypeScript Declaration Dosyaları: .d.ts, @types, declare ve Global Augmentation
.d.ts dosyalarının ne olduğunu, @types ve DefinitelyTyped'ı, declare module ile kendi tanımını yazmayı, ambient tanımları, declare global ile global augmentation'ı ve declaration: true ile .d.ts üretmeyi görüyoruz.
TypeScript Enum, Namespace ve Parameter Properties: Erasable Olmayan Syntax
Numeric ve string enum'ları, const enum'u, namespace'i ve parameter properties'i derlenmiş çıktılarıyla inceliyor; neden erasable olmadıklarını, erasableSyntaxOnly'yi ve as const alternatifini görüyoruz.
TypeScript ile Hata Yönetimi: catch'te unknown, Error Daraltma ve Result Deseni
catch değişkeninin neden unknown olduğunu, instanceof Error ile daraltmayı, kendi hata class'larını, Promise'lerdeki tuzakları ve hataları Result ile discriminated union olarak modellemeyi görüyoruz.
TypeScript Module'leri: import type, verbatimModuleSyntax ve Dosya Uzantıları
TypeScript'te module ile script farkını, import type ve export type'ı, verbatimModuleSyntax'ın neden önemli olduğunu, import'larda .ts uzantısını ve bundler ile nodenext çözümlemesini örneklerle görüyoruz.
TypeScript ile Asenkron Kod: Promise, async ve fetch Cevabını Tiplemek
Promise<T> ve async dönüş tiplerini, fetch cevabının neden any olduğunu, unknown ve elle yazılan type guard ile runtime doğrulamayı ve Promise.all ile allSettled tiplerini görüyoruz.
TypeScript Type Guard'ları: Type Predicate ve Assertion Function
x is T ile type predicate, asserts ile assertion function yazıyor; TypeScript 5.5'in inferred type predicates özelliğini ve filter ile array daraltmayı tuzaklarıyla birlikte görüyoruz.
TypeScript Utility Types 2: Exclude, Extract, NonNullable, ReturnType ve Diğerleri
Union'ları Exclude, Extract ve NonNullable ile süzüyor; ReturnType, Parameters, Awaited, InstanceType ve ConstructorParameters ile fonksiyon ve class'lardan tip türetiyoruz.
TypeScript Utility Types 1: Partial, Required, Readonly, Pick, Omit ve Record
Partial, Required, Readonly, Pick, Omit ve Record'u gerçekçi örneklerle kullanıyor, bir form modelinde birleştiriyor ve Omit'teki yazım hatası gibi sessiz tuzakları görüyoruz.