TypeScript benim ana dilim ve yıllar içinde yalnızca bir dil seçimi olmaktan çıkıp bir değerler bütününe dönüştü. Bunlar stil kılavuzu kuralları değil; iki yıl ve üç yeni geliştirici sonrasında bir kod tabanını değiştirmenin hâlâ keyifli olup olmayacağını belirleyen alışkanlıklar.
Kolaylık değil, dürüstlük. Strict mode ilk commit’ten beri açıktır. any bir tür değil, hata raporudur; veri biçimini gerçekten bilmiyorsam unknown kullanır ve türü adım adım daraltırım. Yalan söyleyen bir tür —derleyiciyi susturmak için kullanılan as cast’i— hiç tür olmamasından kötüdür; çünkü sonraki herkes ona güvenir. Derleyici şikâyet ettiğinde genellikle haklıdır; düzeltme anotasyonda değil, veridedir.
İmkânsız durumları imkânsız kıl. Birbiriyle çelişebilecek isLoading, isError ve data adlı üç bayrak yerine ayrımlı birleşim kullan: idle, loading, verili success ve nedeni belirtilmiş error. Alan modelinde de aynısı geçerlidir: ödenmiş siparişin paymentId’si vardır, ödenmemişin yoktur. never ile yapılan kapsamlı switch kontrolü, unutulan bir durumu üretim olayına dönüşmeden editörde kırmızı çizgi olarak gösterir.
İçeride güven, sınırlarda doğrula. Türler çalışma zamanında kaybolur; bu nedenle sınırı aşan her şey —HTTP gövdesi, webhook, form, localStorage ya da LLM yanıtı— Zod veya benzer bir şemayla ayrıştırılır ve tür bu şemadan türetilir. Tek doğruluk kaynağı, doğruladığımızla inandığımız şeyin ayrışmasını önler. Uygulama içinde tipli veriler her satırda savunmacı kontroller olmadan akar.
Tahminleri değil, sözleşmeleri paylaş. Full-stack bir üründe API tipleri OpenAPI, GraphQL Codegen, Prisma veya ortak bir paketten üretilir ya da paylaşılır; böylece alan adını değiştirmek checkout’u değil, build’i bozar. Okunabilirlik zekice numaralardan değerlidir: yeni bir çalışanın on saniyede anlayacağı basit bir interface, el kitabını okuduğumu kanıtlayan beş katmanlı conditional type’tan iyidir. Generics gösteriş için değil, yeniden kullanım içindir.
Tipler testlerin, code review’un ya da düşünmenin yerini almaz; üçünü de ucuzlatır. TypeScript geliştiricisinin asıl değeri budur: her utility type’ı bilmek değil, sonraki kişinin güvenle değiştirebileceği kod bırakmak. Kod tabanınız any ile doluysa ve ekip refactor’dan çekiniyorsa kimsenin dokunmak istemediği modülü gönderin. Onu nasıl tipleyeceğimi ve bunun hangi hataları yakalayacağını anlatayım.
Bir sonraki ürüne kalacak birini verin.
Başlamaya hazır mısınız? Bana yazın — hemen başlayabilir ve kalabilirim. İki haftalık devir değil, uzun vadeli iş birliği. Projenizi, gereksinimleri ve ilerlemenin en iyi yolunu konuşalım.