TypeScript, geliştiricilerin daha sağlam ve sürdürülebilir kod yazmalarını sağlayan, statik olarak tiplenmiş bir JavaScript üst kümesidir. Microsoft tarafından geliştirilmiştir ve JavaScript uygulamalarının daha iyi ölçeklenebilirliği ve okunabilirliği için isteğe bağlı statik tipleme, arayüzler ve diğer gelişmiş özellikler sunar. TypeScript, mevcut JavaScript kodu ve platformlarıyla uyumluluğu sağlamak için düz JavaScript'e derlenir.
TypeScript, 2010 yılında Anders Hejlsberg ve ekibi tarafından Microsoft'ta başlatılmıştır. Ana hedef, özellikle büyük ölçekli uygulamalarda, karmaşıklığı yönetmek için gereken tip güvenliği ve yapı eksikliklerini gidermektir. JavaScript'i statik tiplerle genişleterek, TypeScript geliştiricilere geliştirme sürecinin erken aşamalarında hataları yakalamak için araçlar sunmayı amaçlamıştır.
Oluşumundan bu yana TypeScript önemli bir evrim geçirmiştir. İlk kararlı sürüm 2012'de çıkmış ve benimsenmesi özellikle büyük işletmeler ve akademik kurumlar arasında hızla artmıştır. Dil, topluluk geri bildirimlerine dayalı sürekli iyileştirmeler entegre ederek, ECMAScript standartlarıyla uyumlu sık güncellemeler ve yeni özellikler sunmuştur.
2023 itibarıyla TypeScript, birçok modern web geliştirme projesi için tercih edilen dil haline gelmiştir. Angular, React ve Vue.js gibi popüler çerçevelerle entegrasyonu, geliştirici ekosistemindeki konumunu pekiştirmiştir. TypeScript'in büyüyen topluluğu, kapsamlı belgeleri ve ana IDE'ler için desteği, popülaritesini artırmıştır.
TypeScript, Java, C# ve Scala gibi birkaç programlama dilinden ilham almıştır; özellikle tip sistemi ve arayüzler ile jenerikler gibi özellikleri açısından. JavaScript'te tipler dinamikken, TypeScript statik tipleri zorunlu kılarak güçlü derleme zamanı kontrolleri sunar. JavaScript ile olan yakın ilişkisi, geliştiricilerin mevcut JavaScript projelerinde TypeScript'i kademeli olarak benimsemelerine olanak tanır.
TypeScript, yüksek sürdürülebilirlik ve tip güvenliği gerektiren büyük ölçekli web uygulamaları, kurumsal yazılımlar ve kütüphaneler oluşturmak için yaygın olarak kullanılmaktadır. Özellikle ön yüz geliştirme bağlamında popülerdir, ancak arka uç programlama ortamlarında da kullanılmaktadır.
TypeScript, geliştiricilerin değişkenlerin, parametrelerin ve dönüş değerlerinin tiplerini tanımlamasına olanak tanıyan statik tipler sunar. Bu özellik, derleme sırasında tip ile ilgili hataları yakalamaya yardımcı olur.
let name: string = "John";
let age: number = 30;
Arayüzler, geliştiricilerin özel veri yapıları tanımlamasına olanak tanır ve kodun yeniden kullanımını ve net API tanımlarını teşvik eder.
interface Person {
name: string;
age: number;
}
let employee: Person = { name: "Alice", age: 25 };
TypeScript, bir değişkene atanan değere dayanarak tipleri çıkarabilir, bu da açık tip bildirimleri gereksinimini azaltır.
let city = "New York"; // string olarak çıkarılır
Enum'lar, adlandırılmış sabitler kümesini tanımlamak için bir yol sağlar, bu da kodun okunabilirliğini ve sürdürülebilirliğini artırır.
enum Direction {
Up,
Down,
Left,
Right,
}
TypeScript, geliştiricilerin herhangi bir veri tipiyle çalışan fonksiyonlar ve sınıflar tanımlamasına olanak tanıyan jenerikleri destekler.
function identity<T>(arg: T): T {
return arg;
}
Tuple'lar, geliştiricilerin sabit boyut ve tipte diziler oluşturmasına olanak tanır, bu da verilerin daha iyi organize edilmesini sağlar.
let person: [string, number] = ["John", 30];
Ad alanları, kodu organize etmeye ve büyük uygulamalarda isim çakışmalarını önlemeye yardımcı olur.
namespace Geometry {
export class Circle {
constructor(public radius: number) {}
}
}
Fonksiyonlar isteğe bağlı parametreler alabilir, bu da fonksiyon çağrılarında esneklik sağlar.
function greet(name: string, greeting?: string) {
return greeting ? `${greeting}, ${name}!` : `Hello, ${name}!`;
}
Birleşim tipleri, değişkenlerin farklı tiplerde değerler tutmasına olanak tanır, bu da kodun esnekliğini artırır.
let value: string | number;
value = "Hello";
value = 42; // geçerli
TypeScript, geliştiricilerin sınıflara ve yöntemlere meta veriler eklemelerine olanak tanıyan dekoratörleri destekler.
function Log(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
console.log(`${propertyKey} metodu çağrıldı`);
}
class User {
@Log
login() {
// giriş mantığı
}
}
TypeScript, Visual Studio Code, WebStorm ve Sublime Text gibi birçok popüler IDE ve metin editörü tarafından desteklenmektedir. Bu ortamlar, TypeScript için özel olarak tasarlanmış IntelliSense, kod navigasyonu ve hata ayıklama yetenekleri gibi güçlü özellikler sunar.
TypeScript derleyicisi (tsc), TypeScript kodunu JavaScript'e dönüştürmek için kullanılır. npm aracılığıyla kurulabilir, bu da mevcut projelere ve yapı sistemlerine entegrasyonu kolaylaştırır.
npm install -g typescript
tsc myfile.ts
TypeScript projesi oluşturmak için geliştiriciler genellikle derleyici seçeneklerini yapılandırmak için bir tsconfig.json
dosyası ayarlar. Bu dosya, hedef JavaScript sürümü, modül çözümü gibi ayarları tanımlar. Projeler, npm betikleri veya görev çalıştırıcıları kullanılarak oluşturulabilir.
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"strict": true
}
}
TypeScript, aşağıdaki gibi çeşitli uygulamalar için yaygın olarak kullanılmaktadır:
TypeScript, birkaç diğer programlama diline kıyasla benzersiz avantajlar sunar:
C#, TypeScript’in sınıfları ve arayüzleri ile benzer olan güçlü bir tip sistemine ve nesne yönelimli paradigmasına sahiptir. TypeScript’in sözdizimi, JavaScript ile daha uyumlu olduğundan, JavaScript'ten geçiş yapan web geliştiricileri için daha kolaydır.
Java'nın tip güvenliği ve OOP ilkeleri, TypeScript ile örtüşmektedir, ancak TypeScript'in dinamik JavaScript kodundaki esnekliği, mevcut JavaScript uygulamalarıyla daha basit entegrasyon sağlar.
Python dinamik olarak tiplenmiş bir dil olup hızlı prototiplemeye olanak tanırken, TypeScript'in statik tipleri, daha az çalışma zamanı hatası sağlar ve büyük ölçekli uygulamalar için daha uygundur.
C++, daha düşük seviyeli programlama yetenekleri sunar ancak TypeScript'in sağladığı web teknolojileriyle sorunsuz entegrasyonu sağlamaz. TypeScript'in geliştirici deneyimine odaklanması onu farklı kılar.
TypeScript, esasen JavaScript'in bir uzantısıdır ve statik tipler ve arayüzler gibi ek özellikler sunarken, geçerli herhangi bir JavaScript kodunu çalıştırabilme yeteneğine sahiptir.
Go, basitlik ve eşzamanlılığa vurgu yaparken, TypeScript'in JavaScript uygulamaları için tip güvenliğine odaklanmasıyla zıtlık gösterir. Web geliştirme için TypeScript, ön yüz çerçeveleriyle entegrasyonu nedeniyle genellikle tercih edilir.
Ruby ve PHP, JavaScript'e benzeyen dinamik dillerdir. Ancak, TypeScript, daha büyük kod tabanları için daha iyi araçlar ve tip güvenliği sağladığından, kurumsal uygulamalar için daha uygundur.
Mevcut JavaScript kodunu TypeScript'e çevirmek isteyen geliştiriciler için ts-migrate
veya TypeScript-React-Conversion
gibi araçlar süreci kolaylaştırabilir. Bu araçlar, yaygın tip çıkarımı ve sözdizimi değişikliklerini ele alarak TypeScript'e geçişi otomatikleştirmeye yardımcı olur.
JavaScript'ten TypeScript'e kaynaklardan kaynağa çeviri için mevcut araçlar şunlardır:
Bu araçların kullanılması, geçiş için gereken manuel çabayı önemli ölçüde azaltabilirken, kod kalitesini ve sürdürülebilirliğini de sağlamaktadır.