Tüm yazılar

TypeScript ile Tip Güvenli Kod Yazma

TypeScript'in tip sistemi, generic'ler, utility types ve gerçek dünya projelerinde tip güvenliği sağlama stratejileri.

#typescript#javascript#tips#programlama

TypeScript ile Tip Güvenli Kod Yazma

TypeScript, JavaScript'e statik tip sistemi ekleyerek daha güvenli ve sürdürülebilir kod yazmamızı sağlar.

Neden TypeScript?

JavaScript'in dinamik tip yapısı, küçük projelerde esneklik sağlarken büyük projelerde ciddi sorunlara yol açabilir:

  • Runtime hataları: Tip uyumsuzlukları sadece çalışma zamanında ortaya çıkar
  • IDE desteği: Otomatik tamamlama ve refactoring sınırlıdır
  • Dokümantasyon: Fonksiyonların ne beklediği belirsizdir

Temel Tipler

// Primitive tipler
const name: string = "Ahmet";
const age: number = 25;
const isActive: boolean = true;

// Diziler
const tags: string[] = ["typescript", "react"];
const scores: Array<number> = [95, 87, 92];

// Objeler
interface User {
  id: number;
  name: string;
  email: string;
  role: "admin" | "user" | "editor";
}

Generic Tipler

Generic'ler, yeniden kullanılabilir ve tip güvenli kod yazmak için güçlü bir araçtır:

// Generic fonksiyon
function getFirst<T>(items: T[]): T | undefined {
  return items[0];
}

const firstNumber = getFirst([1, 2, 3]); // number
const firstString = getFirst(["a", "b"]); // string

// Generic interface
interface ApiResponse<T> {
  data: T;
  status: number;
  message: string;
}

type UserResponse = ApiResponse<User>;
type PostResponse = ApiResponse<Post[]>;

Utility Types

TypeScript'in yerleşik utility type'ları işimizi kolaylaştırır:

// Partial - tüm alanları opsiyonel yapar
type UpdateUser = Partial<User>;

// Pick - belirli alanları seçer
type UserPreview = Pick<User, "id" | "name">;

// Omit - belirli alanları çıkarır
type CreateUser = Omit<User, "id">;

// Record - key-value çiftleri oluşturur
type UserMap = Record<string, User>;

Pratik İpuçları

  1. strict: true kullanın — tüm katı kontrolleri açar
  2. unknown yerine any tercih edin — tip güvenliğini korur
  3. Type guard fonksiyonları yazın — runtime tip kontrolü
  4. Const assertion kullanın — literal tipleri korur
// Type guard örneği
function isUser(value: unknown): value is User {
  return (
    typeof value === "object" &&
    value !== null &&
    "id" in value &&
    "name" in value
  );
}

Sonuç

TypeScript, modern web geliştirmenin vazgeçilmez bir parçası haline geldi. Tip güvenliği sayesinde hatalar daha erken yakalanır, kod daha okunabilir olur ve ekip çalışması kolaylaşır.

"TypeScript'e geçiş yapmanın en iyi zamanı dün, ikinci en iyi zamanı ise bugündür."

Yorumlar (0)

Yükleniyor...