TypeScript'teki Veri Türleri
Bu makale, TypeScript'teki veri türlerini açıklar.
YouTube Video
TypeScript'teki Veri Türleri
TypeScript çeşitli veri türleri sunar. Bu, değişkenler, fonksiyon argümanları ve dönüş değerleri için kesin türler tanımlamanıza olanak tanır. Aşağıda temel veri türleri ve onların kullanımları yer almaktadır.
Primitif Türler
number Türü
1let age: number = 25;
2console.log(age); // Outputs: 25
3console.log(typeof age); // Outputs: number
number
, tam sayı ve ondalık sayılar (yüzer noktalı sayılar) dahil olmak üzere sayısal değerleri işlemek için kullanılan bir türdür. Belirli sınırları aşan değerleri işlemekInfinity
veyaNaN
(Not-a-Number) ile sonuçlanır.
1// Decimal calculations
2console.log(0.1 + 0.2 === 0.3); // false
3console.log(0.1 + 0.2); // 0.30000000000000004
4
5// Calculations with large numbers
6console.log(9007199254740991 + 1); // correct value
7console.log(9007199254740991 + 2); // incorrect value
-
TypeScript'te sayılar yüzer noktalı sayılar olarak temsil edilir. Bu, hesaplama sonuçlarında hafif yanlışlıklara neden olabilir.
-
Finansal miktarlar gibi hassas hesaplamaların gerektiği durumlarda bu tür yuvarlama hatalarından kaçınılması gereklidir. Örneğin,
BigInt
veyatoFixed()
kullanabilir ya dadecimal.js
gibi kütüphanelerle ondalık basamakları ayarlayabilirsiniz.
string Türü
string
türü, metinsel verileri işler.
1let greeting: string = "Hello, TypeScript!";
2console.log(greeting); // Outputs: Hello, TypeScript!
3console.log(typeof greeting); // Outputs: string
boolean (Mantıksal Tür)
boolean
türü, true
veya false
olmak üzere iki değere sahiptir.
1let isOpen: boolean = true;
2console.log(isOpen); // Outputs: true
3console.log(typeof isOpen); // Outputs: boolean
null ve undefined
null
, 'var olmayan bir değer'i ve undefined
, 'tanımsız bir değer'i temsil eder.
1let emptyValue: null = null;
2let notDefined: undefined = undefined;
3
4console.log(emptyValue); // Outputs: null
5console.log(typeof emptyValue); // Outputs: object (JavaScript specification)
6
7console.log(notDefined); // Outputs: undefined
8console.log(typeof notDefined); // Outputs: undefined
Array
TypeScript'te, dizi elemanlarının türünü belirtebilirsiniz. number[]
bir sayı dizisini, string[]
ise bir metin dizisini ifade eder.
1let numbers: number[] = [1, 2, 3, 4];
2console.log(numbers); // Outputs: [1, 2, 3, 4]
3console.log(typeof numbers); // Outputs: object
4
5let words: string[] = ["TypeScript", "JavaScript"];
6console.log(words); // Outputs: ["TypeScript", "JavaScript"]
7console.log(typeof words); // Outputs: object
Tuple
Bir tuple, farklı türlerde elemanlara sahip bir dizidir.
1let person: [string, number] = ["Alice", 30];
2console.log(person); // Outputs: ["Alice", 30]
3console.log(typeof person); // Outputs: object
Enum
enum
, isimlendirilmiş sabitler kümesini tanımlar.
1enum Color {
2 Red,
3 Green,
4 Blue
5}
6
7let favoriteColor: Color = Color.Green;
8console.log(favoriteColor); // Outputs: 1 (Defaults start from 0)
9console.log(typeof favoriteColor); // Outputs: number
any
any
türü herhangi bir türde değeri tutabilir ve tür kontrolünü devre dışı bırakmak istediğinizde kullanılır.
1let anything: any = "Hello";
2console.log(anything); // Outputs: Hello
3console.log(typeof anything); // Outputs: string
4
5anything = 42;
6console.log(anything); // Outputs: 42
7console.log(typeof anything); // Outputs: number
Bileşik Tür
Bileşik türleri kullanarak, birden fazla türe sahip olabilen değişkenler tanımlayabilirsiniz.
1let identifier: number | string = "ID_12345";
2console.log(identifier); // Outputs: ID_12345
3console.log(typeof identifier); // Outputs: string
4
5identifier = 12345;
6console.log(identifier); // Outputs: 12345
7console.log(typeof identifier); // Outputs: number
Özet
number
,string
,boolean
: İlkel türler.null
,undefined
: Özel değerler.Array
: Tür açıklamaları içeren bir dizi.Tuple
: Farklı türlerden öğeler içeren bir dizi.enum
: Numaralandırılmış bir tür.any
: Herhangi bir tür.Union
: Birden fazla türden birini alabilen bir değişken.
Bu veri türlerini kullanarak TypeScript, tür güvenliğini artırır ve geliştirme sırasında hataların önlenmesini kolaylaştırır.
Sarmalayıcı Nesneler
TypeScript'te Sarmalayıcı Nesneler (Wrapper Objects), ilkel veri türlerini nesne olarak ele almak için otomatik olarak oluşturulan nesnelerdir. İlkel türler hafif ve hızlı işlemler sağlar, nesne türleri ise daha zengin işlemleri mümkün kılan yöntemlere ve özelliklere sahiptir.
JavaScript (ve TypeScript)'te, string
, number
ve boolean
gibi ilkel türlere karşılık gelen sarmalayıcı nesneler vardır. Bunlar sırasıyla String
, Number
ve Boolean
adlı yapıcı fonksiyonlar kullanılarak oluşturulur.
Aşağıda sarmalayıcı nesne örnekleri bulunmaktadır.
String Nesnesi
String
nesnesi, dizeler için özellikler ve yöntemler sağlar.
1let strPrimitive: string = "Hello, World!";
2let strObject: String = new String("Hello, World!");
3
4console.log(strPrimitive); // Outputs: Hello, World!
5console.log(typeof strPrimitive); // Outputs: string
6
7console.log(strObject); // Outputs: [String: 'Hello, World!']
8console.log(typeof strObject); // Outputs: object
Özellikler:
- İlkel
string
türünden farklı olarak, birString
nesnesitypeof
tarafındanobject
olarak kabul edilir. - Sarmalayıcı nesneler, dizeleri işlemek veya üzerlerinde yöntem çağırmak için kullanışlıdır.
Number Nesnesi
Number
nesnesi, sayılar için özellikler ve yöntemler sağlar.
1let numPrimitive: number = 42;
2let numObject: Number = new Number(42);
3
4console.log(numPrimitive); // Outputs: 42
5console.log(typeof numPrimitive); // Outputs: number
6
7console.log(numObject); // Outputs: [Number: 42]
8console.log(typeof numObject); // Outputs: object
Özellikler:
Number
nesnesi, sayılar için bir sarmalayıcı olarak, sayısal işlemler için yöntemleri içerir (örneğin,toFixed
).
Boolean Nesnesi
Boolean
nesnesi, boolean değerler için özellikler ve yöntemler sağlar.
1let boolPrimitive: boolean = true;
2let boolObject: Boolean = new Boolean(true);
3
4console.log(boolPrimitive); // Outputs: true
5console.log(typeof boolPrimitive); // Outputs: boolean
6
7console.log(boolObject); // Outputs: [Boolean: true]
8console.log(typeof boolObject); // Outputs: object
Özellikler:
Boolean
nesnesi, ilkelboolean
türü için bir sarmalayıcıdır veobject
olarak kabul edilir.
Sarmalayıcı Nesneler ve İlkel Türler Arasındaki Farklar
Sarmalayıcı nesneler nesne olarak kabul edildiğinden, küçük bir performans düşüşü olur; ancak eklenmiş özellikler ve yöntemler sayesinde daha işlevsel işlemler mümkündür. Ayrıca, ==
ve ===
kullanılarak yapılan karşılaştırmalarda farklar vardır.
1let numPrimitive: number = 123;
2let numObject: Number = new Number(123);
3
4console.log('== : ', numPrimitive == numObject); // Outputs: true (Value comparison)
5console.log('=== : ', numPrimitive === numObject); // Outputs: false (Due to differing types)
Özellikler:
==
, yalnızca değerleri karşılaştırırken===
, türleri de içeren kesin bir karşılaştırma yapar.===
, sarmal nesneler ile ilkel türleri karşılaştırırkenfalse
döner.
Tür Dönüştürme
TypeScript'te örtük ve açık tür dönüştürmeleri düzgün bir şekilde yönetilmesi önemlidir.
Örtük Tür Dönüştürme
- TypeScript'te tür güvenliğini sağlamak için örtük tür dönüştürmelerinden mümkün olduğunca kaçınılmalıdır.
1const result: string = 5 + "5"; // "55" (the number is converted to a string)
2
3console.log(result);
- Bu örnekte,
5
sayısı örtük olarak bir dizeye dönüştürülmüş ve sonuç olarak"55"
dizisi elde edilmiştir.
Açık Tür Dönüştürme
- TypeScript'te tür dönüştürmelerini güvenli bir şekilde gerçekleştirmek için tür açıklamalarını veya tür dönüştürme fonksiyonlarını kullanın.
1const num: string = "123";
2const convertedNum: number = Number(num); // Converts "123" to the number 123
3
4console.log(typeof num);
5console.log(typeof convertedNum);
- Bu örnekte,
"123"
dizisini açıkça123
sayısına dönüştürmek içinNumber()
fonksiyonu kullanılmıştır.
Tür Kontrolü
TypeScript'te bir değişkenin veri türünü kontrol etmek için typeof
operatörünü kullanabilirsiniz.
1// Output: The type of 42 is: number
2console.log('The type of 42 is:', typeof 42);
3
4// Output: The type of 42 is: bigint
5console.log('The type of 42n is:', typeof 42n);
6
7// Output: The type of "hello" is: string
8console.log('The type of "hello" is:', typeof "hello");
9
10// Output: The type of true is: boolean
11console.log('The type of true is:', typeof true);
12
13// Output: The type of undefined is: undefined
14console.log('The type of undefined is:', typeof undefined);
15
16// Output: The type of null is: object
17console.log('The type of null is:', typeof null);
18
19// Output: The type of Symbol() is: symbol
20console.log('The type of Symbol() is:', typeof Symbol());
21
22// Output: The type of {} is: object
23console.log('The type of {} is:', typeof {});
24
25// Output: The type of function () {} is: function
26console.log('The type of function () {} is:', typeof function () {});
- TypeScript'te türleri kontrol etmek için
typeof
kullanılabilir, ancak daha hassas tür kontrolleri içininstanceof
veyais
operatörlerini kullanmanız önerilir.
Özet
- Sarmal Nesneler, ilkel türler için ek yöntemler ve özellikler sağladıkları için nesne olarak işlenir.
String
,Number
veBoolean
, sarmal nesnelere temsilci örneklerdir.- İlkel türlerin aksine, sarmal nesneler
typeof
tarafındanobject
olarak tanımlanır.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.