Değişken kullanımı JavaScript ile benzerlik gösterir. var, let ve const ifadeleri ile değişken tanımlanabilir.
var ile değişken tanımlama
JavaScript’de olduğu gibi var ile değişken tanımlanabilir.
let ile değişken tanımlama
var ile değişken tanımlamadaki problemleri gidermek için ES6 ile beraber duyurulan değişken tanımlama yöntemidir. Sadece değişken tanımlamaya değil aynı zamanda değişkenin tipini de belirtmek için kullanılır. var ifadesinden en büyük farkı da budur.
let employeeName = "John"; // kullanım şekli-1 employeeName:string = "John"; // kullanım şekli-2
var‘dan diğer bir farkı bellek yönetimindeki avantajıdır. Sadece tanımlandığı blok içerisinde var olur (block-scope). Blok dışında geçersizdir.
let num1:number = 1; function letDeclaration() { let num2:number = 2; if (num2 > num1) { let num3: number = 3; num3++; } while(num1 < num2) { let num4: number = 4; num1++; } console.log(num1); //OK console.log(num2); //OK console.log(num3); //Compiler Error: Cannot find name 'num3' console.log(num4); //Compiler Error: Cannot find name 'num4' } letDeclaration();
let ile değişken tanımlamanın avantajları
- let ile tanımlanan ifadeler tekrardan tanımlanamaz. let ile tanımlanmayan değişkenlerin bile tekrar tanımlanmasını engeller.
- Sadece tanımlandığı blok içerisinde geçerlidir. Daha önceden okunup yazılamaz.
const ile değişken tanımlama
let ile beraber ES6’da duyurulan değişken tanımlama yöntemidir. Sadece sabit ve değeri değişmez değişkenlerin tanımlanması için kullanılır.
Değişken tanımlanırken muhakkak bir de değer ataması yapılmalıdır. Aksi takdirde hata verir.
const num:number; //Derleyici Hatası: const ile değişken tanımlamalarda muhakkak tanımlarken değer ataması yapılmalıdır. num = 100;
const ile tanımlanan değişkenin değeri daha sonra değiştirilemez.
const num:number = 100; num = 200; //Derleyici Hatası: Yeni değer ataması yapılamaz. Çünkü sabittir sadece okunabilir.
const ile tanımlanan değişkenin alt değerleri değiştirilebilir. Ama tekrar tanımlar gibi işleme tabi tutulamaz.
const playerCodes = { player1 : 9, player2 : 10, player3 : 13, player4 : 20 }; playerCodes.player2 = 11; // OK, sorun yok. Kabul eder, değer değişir. playerCodes = { //Derleyici Hatası: atamalar yapılamaz. Çünkü, değerler sadece okunabilirdir. player1 : 50, player2 : 10, player3 : 13, player4 : 20 };