TypeScript'te Koşullu Mantık için En İyi Uygulamalar
Bu makale, TypeScript'te koşullu mantık için en iyi uygulamaları açıklar.
YouTube Video
TypeScript'te Koşullu Mantık için En İyi Uygulamalar
Tip Koruyucular ile Türleri Daraltma
TypeScript'in tür sisteminden yararlanarak ve if
ifadelerinde tür koruyucuları kullanarak, tür güvenliğini ve okunabilirliği artırabilirsiniz.
1function processInput(input: string | number) {
2 if (typeof input === "string") {
3 console.log(`String input: ${input.toUpperCase()}`);
4 } else {
5 console.log(`Number input: ${input.toFixed(2)}`);
6 }
7}
typeof
ve diğer tür koruyucuları kullanmak, her bir bloğun içindeki kodun tür güvenliğini ve bağlam açısından uygunluğunu sağlar.
İç İçe Geçmiş if
İfadelerinden Kaçının
Derinlemesine iç içe geçmiş if
ifadeleri, kodun okunabilirliğini ve sürdürülebilirliğini azaltır. Bunun yerine erken dönüşler, mantıksal operatörler veya fonksiyon çıkarmaları kullanın.
Kötü Örnek:
1function checkUser(user: { age?: number; isAdmin?: boolean }) {
2 if (user.age) {
3 if (user.age > 18) {
4 if (user.isAdmin) {
5 console.log("User is an adult admin.");
6 }
7 }
8 }
9}
Geliştirilmiş Örnek:
1function checkUser(user: { age?: number; isAdmin?: boolean }) {
2 if (!user.age || user.age <= 18 || !user.isAdmin) {
3 return;
4 }
5 console.log("User is an adult admin.");
6}
Bu yaklaşım, kodu düzleştirir ve mantığı daha anlaşılabilir hale getirir.
Opsiyonel Zincirlemeyi Kullanın
İç içe geçmiş özellikleri kontrol ederken, gereksiz if
koşullarından kaçınmak için opsiyonel zincirleme (?.
) kullanın.
Opsiyonel Zincirleme Olmadan:
1if (user && user.profile && user.profile.email) {
2 console.log(user.profile.email);
3}
Opsiyonel Zincirleme Kullanılarak:
1if (user?.profile?.email) {
2 console.log(user.profile.email);
3}
Bu, tekrarlayan kodu azaltır ve okunabilirliği artırır. Burada tekrarlayan kod, programlamada belirli görevleri yerine getirmek için sıkça gereken tekrarlı, standartlaştırılmış kod anlamına gelir.
Kesin Eşitlik Operatörlerini Kullanın
TypeScript, kesin tür sistemini destekler ve kesin eşitlik (===
) veya kesin eşitsizlik (!==
) kullanmak, beklenmeyen tür dönüştürmelerini önlemeye yardımcı olur.
Kötü Örnek:
1if (value == "123") {
2 console.log("Value is 123.");
3}
Geliştirilmiş Örnek:
1if (value === "123") {
2 console.log("Value is 123.");
3}
Belirgin Koşullar İçin Enums veya Literal Türleri Kullanın
Enumlar veya literal türler kullanmak koşulların netleşmesini sağlar ve hata olasılığını azaltır.
1type Status = "success" | "error" | "loading";
2
3function displayMessage(status: Status) {
4 if (status === "success") {
5 console.log("Operation succeeded.");
6 } else if (status === "error") {
7 console.log("Operation failed.");
8 } else {
9 console.log("Loading...");
10 }
11}
Beklenen değerleri tanımlayarak, TypeScript türleri algılayabilir ve doğruluğu sağlayabilir.
Benzer koşulları birleştirin
Birden çok koşul aynı mantığı paylaşıyorsa, onları mantıksal operatörler veya bir switch ifadesi kullanarak birleştirin.
Kötü Örnek:
1if (role === "admin") {
2 grantAccess();
3}
4if (role === "superadmin") {
5 grantAccess();
6}
Geliştirilmiş Örnek:
1if (role === "admin" || role === "superadmin") {
2 grantAccess();
3}
Alternatif olarak, birden fazla belirgin dalı yönetmek için bir switch ifadesi kullanın:
1switch (role) {
2 case "admin":
3 case "superadmin":
4 grantAccess();
5 break;
6 case "user":
7 console.log("Limited access.");
8 break;
9 default:
10 console.log("No access.");
11}
Koşullu ifadeleri karmaşık hale getirmekten kaçının
If ifadelerindeki karmaşık koşullu ifadeler okunabilirliği azaltır. Bunları anlamlı değişkenlere veya fonksiyonlara çıkarın.
Kötü Örnek:
1if (user.age > 18 && user.isAdmin && user.permissions.includes("write")) {
2 console.log("User can write.");
3}
Geliştirilmiş Örnek:
1const isAdultAdminWithWriteAccess = user.age > 18 && user.isAdmin && user.permissions.includes("write");
2if (isAdultAdminWithWriteAccess) {
3 console.log("User can write.");
4}
Koşullara isim vermek, açıklığı artırır ve kodu kendi kendini belgeleyen hale getirir.
Basit koşullar için üçlü operatörler kullanın
Basit koşullar için üçlü operatörler kullanmak kodu anlaşılır ve kısa hale getirir.
Örnek:
1const message = isLoggedIn ? "Welcome back!" : "Please log in.";
2console.log(message);
Ancak, üçlü operatörleri karmaşık koşullar için kullanmaktan kaçının, çünkü bu okunabilirliği azaltır.
Sonuç
Bu en iyi uygulamaları takip ederek, TypeScript'teki if ifadelerini net, verimli ve sürdürülebilir hale getirebilirsiniz. Kodunuzun okunabilirliğini ve sağlamlığını artırmak için TypeScript'in tür korumaları, isteğe bağlı zincirleme ve enumlar gibi özelliklerini kullanın. Koşulları kısa ve net tutun; her zaman kolayca anlaşılabilir ve sürdürülebilir bir kod yazmaya çalışın.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.