TypeScript JavaScript programlama dilindeki nesne yönelimli programlama eksikliğini gidermek için Microsoft tarafından geliştirilmiş bir programlama dilidir. Nesne yönelimli programlamada en önemli kavramlardan bir tanesi de Encapsulation kavramıdır ve TypeScript 1.3 Sürümü ile bu mantık daha da kuvvetlendirilmiştir.
TypeScript 1.3 Sürümü ile eklenen protected kavramı diğer progrmalama dilleri C++, C# ve Java'daki benzer mantığa sahiptir ve amaç Encapsulation mantığını kuvvetlendirmektir. Bu bloğun amacı TypeScript üzerine yoğunlaşmak olduğu için protected ve Encapsulation konuları üzerinde fazla durmayacağım. Ama TypeScript programlama dilini çok iyi kullanmak istiyorsanız nesne yönelimli programlamaya da hakim olmanız gerekiyor.
protected kullanımı ile ilgili örnekle devam edersek kullanımla ilgili kafanızda altyapı oluşacaktır. Diğer programlama dillerinde protected kavramını etkin kullanıyorsanız zaten konuyu hemen anlayacaksınız. Zaten protected gibi bir nesne yönelimli metodolojisinin kullanımı alışkanlık ve doğru nesne yönelimli uygulama mantığı ile oluşur.
class Thing {
protected doSomething() { /* ... */ }
}
class MyThing extends Thing {
public myMethod() {
// OK, can access protected member from subclass
this.doSomething();
}
}
var t = new MyThing();
t.doSomething(); // Error, cannot call protected member from outside class
TypeScript 1.3 Sürümü ile eklenen protected kavramı diğer progrmalama dilleri C++, C# ve Java'daki benzer mantığa sahiptir ve amaç Encapsulation mantığını kuvvetlendirmektir. Bu bloğun amacı TypeScript üzerine yoğunlaşmak olduğu için protected ve Encapsulation konuları üzerinde fazla durmayacağım. Ama TypeScript programlama dilini çok iyi kullanmak istiyorsanız nesne yönelimli programlamaya da hakim olmanız gerekiyor.
protected kullanımı ile ilgili örnekle devam edersek kullanımla ilgili kafanızda altyapı oluşacaktır. Diğer programlama dillerinde protected kavramını etkin kullanıyorsanız zaten konuyu hemen anlayacaksınız. Zaten protected gibi bir nesne yönelimli metodolojisinin kullanımı alışkanlık ve doğru nesne yönelimli uygulama mantığı ile oluşur.
class Thing {
protected doSomething() { /* ... */ }
}
class MyThing extends Thing {
public myMethod() {
// OK, can access protected member from subclass
this.doSomething();
}
}
var t = new MyThing();
t.doSomething(); // Error, cannot call protected member from outside class
TypeScript 1.3 Sürümü ile gelen diğer bir özellik ise Tuple kavramıdır. Bu özellik ile tanımlanan bir dizinin elemanları farklı türlerde olabilir. Mantık olarak TypeScript'in kesin nesne türlerine aykırı olsa da bu özellik farklı problemlerin çözümünde etkili olabilir. Özellikle nosql veritabanı kullanımlarında çok etkin kullanılmaktadır. Buna rağmen typle dizi içindeki elemanların da hangi türde olacağını belirler. Konunun daha iyi anlaşılması için bir örnekle devam edecek olursak:
// Declare a tuple type
var x: [string, number];
// Initialize it
x = ['hello', 10]; // OK
// Initialize it incorrectly
x = [10, 'hello']; // Error
TypeScript 1.4 Sürümü ile Tuple konusu ile ilgili geliştirmeler yapılmış ve bir çok eksik giderilmiştir. Bu makalede detaylar anlatıldığı için burada konunun fazla detayına girmeyeceğim. Blog içinde de Tuple konusunun anlatıldığı makaleler bulunmakta. Konuyu merak ediyorsanız bu makalelere de göz atmanızı tavsiye ederim.
Yorumlar
Yorum Gönder