TypeScript
TypeScript hakkında detaylı bilgi aşağıda verilmiştir:
Tarihçe
- Yaratıcı: TypeScript, Microsoft tarafından geliştirilmiştir.
- İlk Yayın: İlk olarak 2012 yılında yayımlanmıştır.
- Başlıca Katkıcı: Anders Hejlsberg, TypeScript'in baş mimarıdır ve aynı zamanda Delphi ve C# dillerinin de baş mimarıdır.
Temel Özellikler
- JavaScript Üst Kümesi: TypeScript, JavaScript'in üst kümesidir, yani tüm geçerli JavaScript kodları aynı zamanda geçerli TypeScript kodlarıdır.
- Statik Tip Denetimi: TypeScript, değişkenlerin, fonksiyonların ve diğer yapıların türlerini tanımlama imkanı sunar.
- Gelişmiş IDE Desteği: Tür bilgileri sayesinde daha iyi kod tamamlama, hata kontrolü ve refaktörizasyon sağlar.
- ES6 ve Üzeri Özellikler: TypeScript, modern JavaScript (ES6 ve sonrası) özelliklerini destekler ve bunları eski JavaScript ortamlarına derleyebilir.
- Modülerlik: ES6 modüllerini destekler ve modüler programlama yaklaşımını teşvik eder.
- OOP Desteği: Sınıflar, arayüzler ve kalıtım gibi nesne yönelimli programlama özelliklerini içerir.
Temel Sözdizimi
Değişken Tanımlama:
typescript
let age: number = 30;
let name: string = "Alice";
let isStudent: boolean = true;
Fonksiyonlar:
typescript
function add(a: number, b: number): number {
return a + b;
}
Koşullar:
typescript
if (age > 18) {
console.log("Adult");
} else {
console.log("Not an adult");
}
Döngüler:
typescript
for (let i: number = 0; i < 5; i++) {
console.log(i);
}
let i: number = 0;
while (i < 5) {
console.log(i);
i++;
}
Nesne Yönelimli Programlama
Sınıflar ve Nesneler:
typescript
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet(): void {
console.log(`Hello, my name is ${this.name}`);
}
}
let person = new Person("Alice", 30);
person.greet();
Kalıtım:
typescript
class Animal {
eat(): void {
console.log("Eating");
}
}
class Dog extends Animal {
bark(): void {
console.log("Barking");
}
}
let dog = new Dog();
dog.eat();
dog.bark();
Arayüzler ve Türler
Arayüzler:
typescript
interface Person {
name: string;
age: number;
greet(): void;
}
let person: Person = {
name: "Alice",
age: 30,
greet() {
console.log(`Hello, my name is ${this.name}`);
}
};
Birleşik ve Kesit Türler:
typescript
type UnionType = string | number;
let value: UnionType;
value = "Hello";
value = 42;
type Person = { name: string; age: number; };
type Employee = Person & { employeeId: number; };
let employee: Employee = { name: "Bob", age: 25, employeeId: 1234 };
Asenkron Programlama
- Async/Await:
typescript
function delay(ms: number) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function asyncFunction() {
console.log("Start");
await delay(1000);
console.log("End");
}
asyncFunction();
Modüller
- Modül İçe ve Dışa Aktarma:
typescript
// math.ts
export function add(a: number, b: number): number {
return a + b;
}
// main.ts
import { add } from './math';
console.log(add(2, 3));
Örnek Proje: Basit Bir REST API
TypeScript kullanarak Express.js ile basit bir RESTful API oluşturma:
Proje Başlatma:
bash
mkdir simple-api
cd simple-api
npm init -y
npm install express body-parser
npm install --save-dev typescript @types/express @types/node
npx tsc --init
tsconfig.json Ayarları: tsconfig.json
dosyasını düzenleyerek aşağıdaki gibi yapılandırın:
json
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"outDir": "./dist"
},
"include": ["src/**/*"]
}
Proje Dizini Yapısı:
css
simple-api/
├── src/
│ ├── index.ts
│ └── routes/
│ └── users.ts
├── tsconfig.json
└── package.json
index.ts Dosyası:
typescript
import express from 'express';
import bodyParser from 'body-parser';
import userRoutes from './routes/users';
const app = express();
const port = 3000;
app.use(bodyParser.json());
app.use('/users', userRoutes);
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
users.ts Dosyası:
typescript
import { Router, Request, Response } from 'express';
const router = Router();
interface User {
id: number;
name: string;
}
let users: User[] = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' }
];
router.get('/', (req: Request, res: Response) => {
res.json(users);
});
router.post('/', (req: Request, res: Response) => {
const newUser: User = req.body;
users.push(newUser);
res.status(201).json(newUser);
});
export default router;
Projenin Derlenmesi ve Çalıştırılması:
Tarayıcıda http://localhost:3000/users
adresine giderek API'yi test edebilirsiniz.
bash
npx tsc
node dist/index.js
TypeScript, JavaScript'in güçlü yanlarını koruyarak statik tip denetimi, gelişmiş IDE desteği ve modern dil özellikleri sunar. Büyük ve karmaşık projelerde hataların erken tespit edilmesini sağlar ve kodun bakımını kolaylaştırır. Web geliştirme, sunucu tarafı programlama ve daha pek çok alanda kullanılabilir. Özellikle büyük ölçekli uygulamalarda tercih edilen TypeScript, hem geliştirici deneyimini hem de kod kalitesini artırır.
gücüne hayran kalacaksınız.