Bölüm 2: TypeScript Temel Tipler: string, array, enum ve daha fazlası

2.1 Temel Tipler Nedir?
TypeScript, JavaScript’in tüm değer türlerini statik tiplerle tanımlamamıza olanak tanır. Bu, kodun hataya daha az açık olmasını sağlar.
Temel Veri Tipleri:
Tip | Açıklama | Örnek |
---|---|---|
string | Metin değeri | "Hello" |
number | Sayı değeri | 42, 3.14 |
boolean | true veya false | true |
null, undefined | Boş değerler | null, undefined |
any | Her türlü değer olabilir (kaçınılmalı) | let a: any = 5; |
unknown | Türü bilinmeyen değer (daha güvenli any) | let u: unknown = "X" |
void | Fonksiyon geriye değer döndürmez | function log(): void |
never | Asla gerçekleşmeyen durum | function fail(): never { throw ... } |
2.2 TypeScript ile Değişken Tanımı
1let userName: string = "Yasin";2let age: number = 26;3let isOnline: boolean = true;
2.3 array ve tuple
Dizi (Array):
1const numbers: number[] = [1, 2, 3];2const names: string[] = ["Ali", "Ayşe"];34// Alternatif5const numbersAlt: Array<number> = [1, 2, 3];
Tuple: Sıralı, sabit uzunlukta farklı türlerden dizi
1let person: [string, number] = ["Yasin", 26];
2.4 enum – Sabit Değer Listesi
1enum UserRole {2Admin = "admin",3User = "user",4Guest = "guest",5}67const role: UserRole = UserRole.Admin;
✅ Özellikle UI’de rol, durum, tema gibi sabitler için kullanılır.
2.5 any ve unknown Farkı
Tip | Açıklama | Güvenlik |
---|---|---|
any | Her şeyi kabul eder, kontrol yok | ❌ Tehlikeli |
unknown | Önce kontrol gerek | ✅ Daha güvenli |
1let val: unknown = "merhaba";23if (typeof val === "string") {4console.log(val.toUpperCase()); // Güvenli5}
2.6 void ve never
void: Geriye değer döndürmeyen fonksiyon
1function logMessage(msg: string): void {2console.log(msg);3}
never: Fonksiyon hiçbir zaman tamamlanmaz
1function throwError(): never {2throw new Error("Bir hata oluştu!");3}
Uygulama Örneği: Kullanıcı Kartı
Amaç: Temel tipleri içeren bir bileşen oluşturmak
1// types/UserCardProps.ts2export type UserCardProps = {3name: string;4age: number;5isPremium: boolean;6interests: string[];7};
1// components/UserCard.tsx2import { UserCardProps } from "../types/UserCardProps";34export default function UserCard({ name, age, isPremium, interests }: UserCardProps) {5return (6<div className="p-4 border rounded">7<h2>{name} ({age})</h2>8<p>{isPremium ? "🌟 Premium Üye" : "Ücretsiz Üye"}</p>9<ul>10{interests.map((i) => <li key={i}>{i}</li>)}11</ul>12</div>13);14}
1// App.tsx2import UserCard from "./components/UserCard";34export default function App() {5return (6<UserCard7name="Yasin"8age={26}9isPremium={true}10interests={["React", "TypeScript", "Next.js"]}11/>12);13}
Alıştırma / Mini Ödev
- Kendi adını, yaşını, premium durumunu ve hobilerini alan bir bileşen oluştur
- Hobileri boş dizi olarak ver
age
değerinistring
olarak ver ve TypeScript hatasını gözlemleinterests: string[] | undefined
yaparak opsiyonel hale getir
Bölüm Özeti
Konu | Açıklama |
---|---|
string, number, boolean | Temel tipler |
array, tuple | Dizi ve sıralı karma değer |
enum | Sabit değer listesi |
any, unknown | Her şey olabilir, dikkatli olunmalı |
void, never | Fonksiyon geri dönüşleri için özel tipler |