TypeScript Tür İddiaları Nasıl Kullanılır
TypeScript'teki tür doğrulamaları, derleyiciye bir değerin türü hakkında ondan daha fazla şey bildiğinizi söylemenin bir yoludur. Bu, belirsiz veya geniş türlere sahip değerlerle çalışırken ve daha iyi tür denetimi ve kod okunabilirliği için bunları daraltmak istediğinizde yararlı olabilir. Bu makalede, TypeScript tür doğrulamalarının etkili bir şekilde nasıl kullanılacağını inceleyeceğiz.
Tip İddiası Nedir?
Type assertion, TypeScript derleyicisi tarafından yapılan varsayılan tür çıkarımını geçersiz kılmanıza izin veren bir TypeScript mekanizmasıdır. Gerçek çalışma zamanı türünü değiştirmez ancak derleyicinin tür denetimi amacıyla bir değişkenin türünü anlamasına yardımcı olur. Tür doğrulamaları, C# veya Java gibi diğer dillerdeki tür dönüştürmeye benzerdir ancak herhangi bir çalışma zamanı etkisi yoktur.
Tür İddialarının Sözdizimi
TypeScript'te tür doğrulamalarını kullanmanın iki yolu vardır:
as
anahtar kelimesini kullanmak (önerilir)- Açılı parantez kullanımı
<>
as
Anahtar Sözcüğünü Kullanma
Tür doğrulamalarını kullanmanın en yaygın yolu as
anahtar sözcüğüdür:
let someValue: unknown = "Hello, TypeScript!";
let strLength: number = (someValue as string).length;
console.log(strLength); // Output: 17
Bu örnekte TypeScript'e someValue
değerinin string
tipinde olduğunu söylüyoruz. Bu da bize length
özelliğini kullanma olanağı sağlıyor.
Açı Parantezlerinin Kullanımı <>
Tür doğrulamaları için alternatif sözdizimi açılı parantezleri kullanır:
let someValue: unknown = "Hello, TypeScript!";
let strLength: number = (someValue).length;
console.log(strLength); // Output: 17
Bu sözdizimi, as
sözdizimiyle aynı sonucu elde eder. Ancak, JSX'in (React gibi) kullanıldığı ortamlarda önerilmez, çünkü JSX öğelerinin sözdizimiyle çakışır.
Tür İddiaları için Genel Kullanım Örnekleri
Tür doğrulamaları genellikle çeşitli senaryolarda kullanılır:
unknown
türüyle çalışırken- DOM öğelerini işlerken
- Birlik türlerini daraltırken
- Tür tanımları olmayan üçüncü taraf kitaplıklarla etkileşim kurarken
Örnek: unknown
Türüyle Türleri İddia Etme
unknown
türü, herhangi bir türü kabul etmek istediğinizde ancak kullanmadan önce yine de bazı tür kontrolleri yapmanız gerektiğinde kullanışlıdır. Tür doğrulamaları türü daraltmaya yardımcı olur:
function getLength(value: unknown): number {
if (typeof value === "string") {
return (value as string).length;
} else if (Array.isArray(value)) {
return (value as any[]).length;
}
return 0;
}
console.log(getLength("Hello")); // Output: 5
console.log(getLength([1, 2, 3])); // Output: 3
console.log(getLength(42)); // Output: 0
Bu örnekte, TypeScript'e value
öğesinin bir string
veya bir any[]
dizisi olduğunu söylemek için tür doğrulamalarını kullanıyoruz.
Örnek: DOM Elemanlarının İşlenmesi
DOM'u işlerken, TypeScript'in uygun özellikler ve yöntemler sağlamak için bir öğenin belirli türünü bilmesi gerekir. Tür iddiaları burada faydalıdır:
const inputElement = document.getElementById("user-input") as HTMLInputElement;
inputElement.value = "Hello, TypeScript!";
Burada, TypeScript'e inputElement
öğesinin bir HTMLInputElement
olduğunu söylemek için tür doğrulamasını kullanıyoruz. Bu, value
özelliğine doğrudan erişmemizi sağlıyor.
Tür İddiası ve Tür Dökümü
Tür doğrulaması ile tür dönüşümü arasındaki farkı anlamak önemlidir. TypeScript'te tür doğrulamaları çalışma zamanında gerçek türü değiştirmez; yalnızca TypeScript derleyicisine türü derleme zamanında nasıl ele alacağını söyler. Buna karşılık, C# veya Java gibi diğer dillerde tür dönüşümü çalışma zamanında bir değerin bir türden diğerine dönüştürülmesini içerebilir ve bu da performansı ve davranışı etkileyebilir.
Tür İddialarını Kullanırken Dikkat Edilmesi Gerekenler
Tür iddiaları güçlü olabilse de, yanlış kullanımı çalışma zamanı hatalarına yol açabilir. İşte bunları güvenli bir şekilde kullanmak için bazı ipuçları:
- Uyumsuz türleri zorla dönüştürmek için iddiaları kullanmaktan kaçının.
- Her zaman iddiaları dikkatli kullanın ve TypeScript'in tür koruyucularını kullanarak türleri daraltmayı tercih edin.
- Tipten emin olduğunuzda ve başka türlü daraltmanın mümkün olmadığı durumlarda iddiaları kullanın.
Yanlış Tip İddiası Örneği
İşte tehlikeli bir tip iddiasına bir örnek:
let someValue: string = "Hello, TypeScript!";
let numValue: number = (someValue as unknown as number); // Dangerous!
console.log(numValue); // Output: Hello, TypeScript! (incorrect)
Bu kod hatasız derlenir, ancak dize yanlış bir şekilde sayı olarak işlendiğinden çalışma zamanında beklenmeyen davranışlara yol açar.
Çözüm
TypeScript'teki tür iddiaları, bir değerin türü hakkında TypeScript'ten daha fazla şey bildiğinizde çıkarılan türleri geçersiz kılmanın bir yolunu sağlar. Belirsiz türlerle uğraşırken, üçüncü taraf kitaplıklarla etkileşim kurarken veya DOM öğeleriyle çalışırken faydalıdırlar. Ancak, çalışma zamanı hatalarından kaçınmak ve kodunuzda tür güvenliğini sağlamak için dikkatli bir şekilde kullanılmalıdırlar.
Tür doğrulamalarında ustalaşarak daha etkileyici ve sağlam TypeScript kodu yazabilirsiniz. Bu güçlü özellik ile daha rahat olmak için bunları çeşitli senaryolarda kullanma pratiği yapın.