
Her Programlama dilinde olduğu gibi TypeScript'te de veri türleri bulunmaktadır. Veri türleri sayesinde değişkenin tutacağı değer türü tanımlanır. TypeScript tür güvenliği sağlar ve kod anlaşılırlığı artar.
String
Metinsel veri türleri için kullanılır.
// String
const text: string = "Hello World";
Number
Sayısal işlemlerde kullanılır.
// Number
const numOne: number = 15;
Boolean
Mantıksal değerdir. true false değerinden birini alır.
// Boolean
const isOpen: boolean = true;
BigInt
Çok büyük tam sayıları temsil eder.
// Bigint
const numTwo: bigint = 1234567890123456789012345678901234567890n;
Symbol
İlkel veri türüdür. Değişmez ve benzersiz yapıdır.
// Symbol
const sym1 = Symbol("Symbol 1")
const sym2 = Symbol("Symbol 1")
console.log(sym1 === sym2)
// false değeri döndürecektir.
Tür Ataması
TypeScript, tür denetçisidir. Yapısı gereği değişken vs tür kontrolü yapar. Tür uyuşmazlığı durumunda uyarı döndürür.
let value: string = "Pilli Bebek"
value = 15;
console.log(value)
// TS2322: Type 'number' is not assignable to type 'string'.
// TypeScript burada string türüne sahip olan değerin sayısal değere eşit olamayacağını belirtiyor.
Implict - Explicit Types
TypeScript yapısı gereği sıkı güvenlikli ve tür denetçisidir. İlgili değişkenin değerin türünü TypeScript otomatik olarak algıladığı gibi geliştirici de ilgili değerin hangi türde olacağını belirtebilir.
Explicit (Açık Tür) Types
TypeScript'e değerin hangi tür olduğunu açıklanan türdür. Örnek;
// Explicit Types
const age : number = 24;
console.log(age)
// Programcı burada age adlı değişkenin number türüne olduğu belirtiliyor number türünden başka değer alamayacak alırsa hata verecektir.
Implicit (Kapalı Tür) Types
Bu türde TypeScript'e değerin hangi tür olduğu belirtmeye gerek kalmaz.
// Implicit Types
const arr = ["TS", "JS", "TSX"]
arr [3] = 15;
// TS2322: Type 'number' is not assignable to type 'string'.
// TypeScript burada array otomatik olarak string türüne eşit olduğunu belirliyor. Bu dizi sadece string türünden değer alabilir. Explicit Types farkı kısaca budur.
Special (Özel Tür) Types
TypeScript'e özgü bazı özel tür vardır bunlar, any never unknown
Any
TypeScript'te değer tipi hatalarını göz ardı edilmesini sağlayan türdür. Kullanılmaması önerilir. Tür denetimini kaldırır bu sayede TS2322 hatası ile karşılaşmayız.
// Any
let anyExp: any = false;
anyExp = "true"
anyExp = {name: "John"}
console.log(anyExp)
Any Kullanmayın
Any özel türü, tür kontrolü yapmamaktadır. Hem TypeScript özelliğinden mahrum (TypeScript hata yakalama ve güvenli kod yazma zayıflatır.) bırakır. TypeScript yapısı gereği temiz kod ve veri kontrolüne önem verir.
Never
Değer dödnürmez. Hata fırlatıp programı sonlandıran fonksiyon özelliği taşır.
// Never Type
type Shape = "circle" | "square"
function fail(msg: string): never {
throw new Error(msg);
}
function getArea(shape: Shape): number {
if (shape === "circle") {
return Math.PI * 2 * 2 // area
} else if (shape === "square") {
return 4 * 4
} else {
return fail(`Unexcepted shape: ${shape}`);
}
}
console.log(getArea("circle"))
console.log(getArea("square"))
console.log(getArea("pentagon"))
// Kodun özeti;
// shape adında tür belirlendi 2 değer veya her ikisindeki değer ataması yapılıyor.
/* fail() fonksiyonu yukaridaki tanımın asıl amacı denilebilir.
parametreli fonksiyondur. Error fırlatır never olduğundan değer döndürmez hata döndürür.
*/
// shape türünü referans alır.
// Beklenmeyen durumda never yapısı devreye girerek eksik durum veya belirtilmeyen kod,fonksiyon vs çalışmasını engeller.
Unknown
Türün değeri bilinmiyor ama tür denetimi gerekliyse unknown kullanılabilir.
// Unknown
let value = unknown;
value = 1;
value = "text"
value = {name: "John"}
// Any ile benzerdir tek farkı işlem yapmadan önce türü kontrol eder
let valNameErr = value.name()
console.log(valNameErr)
// TS 18046 value is of type unknown
// Örnek 1 Array ile Kullanım
value = [1, 2, 3, "A"]
const valArr = (value as any).sort((a: any, b: any) => a - b)
// type guard ile kodu daha fazla uzatmamak, yeni başlayanlara hitap ettiği ve karıştırmamak için any kullanıldı any kullanmamaya özen gösterin. İleri ki konuda type guard gösterilecektir.
console.log(valArr)
// Örnek 2 Object ile Kullanım
const valObj = (value as { name: string, age: number })
console.log(`Name: ${valObj.name}, Age: ${valObj.age} `)
console.log(valObj)
Unknown Any Farkı
unknown ile any arasındaki fark;
Any tip güvenliğini devre dışı bırakırken, unknown tip güvenliğini korumaya devam eder.
Egzersiz Dosyası
Datatypes.ts