Veri Türleri

TypeScript Veri Türleri
TypeScript Veri Türleri

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.

ts
// String
const text: string = "Hello World";

Number

Sayısal işlemlerde kullanılır.

ts
// Number
const numOne: number = 15;

Boolean

Mantıksal değerdir. true false değerinden birini alır.

ts
// Boolean
const isOpen: boolean = true;

BigInt

Çok büyük tam sayıları temsil eder.

ts
// Bigint
const numTwo: bigint = 1234567890123456789012345678901234567890n;

Symbol

İlkel veri türüdür. Değişmez ve benzersiz yapıdır.

ts
// 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.

ts
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;

ts
// 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.

ts
// 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.

ts
// 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.

ts
// 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.

ts
// 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

Kaynakça