Menu
Coddy logo textTech

TypeScript Hile Sayfası

Son güncelleme

Temel tipler

İlkel tipler ve değişkenleri nasıl etiketleyeceğin.

İşlemSözdizimi
Stringlet name: string = "Ada";
Sayılet age: number = 25;
Booleanlet ok: boolean = true;
T dizisilet xs: number[] = [1, 2, 3];
Generic dizilet xs: Array<string> = [];
Tuplelet pair: [string, number] = ["a", 1];
Any (tip kontrolü kapalı)let x: any = 1;
Unknown (güvenli any)let x: unknown = JSON.parse(s);
Void (dönüş yok)function log(): void { … }
Never (asla dönmez)function fail(): never { throw … }
Null / undefinedlet n: null = null;

Tip çıkarımı ve etiketleme

TS ne zaman tip çıkarsın, ne zaman elle etiketle.

İşlemSözdizimi
Değerden çıkarılanlet count = 0; // number
Açık etiketlemelet count: number = 0;
Fonksiyon parametresifunction add(a: number, b: number) { … }
Dönüş tipifunction add(a: number, b: number): number { … }
Arrow fonksiyonconst sq = (x: number): number => x * x;
Tip iddiasıconst el = input as HTMLInputElement;
Const iddiası (literal)const dirs = ["up", "down"] as const;
Non-null iddiasıel!.focus();

Arayüzler (interface)

Bir nesnenin şeklini tanımla.

İşlemSözdizimi
Tanımlainterface User { id: number; name: string; }
İsteğe bağlı özellikinterface User { age?: number; }
Readonly özellikinterface User { readonly id: number; }
Metod imzasıinterface Logger { log(msg: string): void; }
Başka bir arayüzü genişletinterface Admin extends User { role: string; }
İndeks imzasıinterface Map { [key: string]: number; }
Bir sınıfta uygulaclass Db implements Logger { … }

Type alias'lar ve union'lar

Bir tipi adlandır ve | ile & kullanarak tipleri birleştir.

İşlemSözdizimi
Type aliastype ID = string | number;
Nesne alias'ıtype User = { id: number; name: string };
Union tipitype Status = "idle" | "loading" | "done";
Intersection tipitype Admin = User & { role: string };
Literal tiptype Yes = "yes";
Null'a izin verentype Maybe<T> = T | null | undefined;
Fonksiyon alias'ıtype Handler = (e: Event) => void;

Fonksiyonlar

Tipli parametreler, dönüşler ve aşırı yüklemeler.

İşlemSözdizimi
İsteğe bağlı parametrefunction greet(name?: string) { … }
Varsayılan parametrefunction greet(name = "friend") { … }
Rest parametrelerfunction sum(...ns: number[]): number { … }
Fonksiyon tipilet fn: (a: number) => number;
Çağrılabilir arayüzinterface Fn { (x: number): number; }
Aşırı yükleme imzalarıfunction f(x: string): string; function f(x: number): number; function f(x: any) { return x; }
Void dönüş yok sayılırconst cb: () => void = () => 42; // ok

Sınıflar

Erişim belirleyicili ve parametre özellikli sınıflar.

İşlemSözdizimi
Sınıf tanımıclass User { name: string; }
Constructorconstructor(name: string) { this.name = name; }
Parametre özelliğiconstructor(public name: string) {}
Public / private / protectedprivate id: number;
Readonly alanreadonly id: number;
Statik üyestatic count = 0;
Getter / setterget name() { return this._name; }
Kalıtımclass Admin extends User { … }
Soyut sınıfabstract class Shape { abstract area(): number; }

Generic'ler

Başka tiplerle parametrize edilen yeniden kullanılabilir tipler.

İşlemSözdizimi
Generic fonksiyonfunction id<T>(x: T): T { return x; }
Açık tiple çağırid<string>("hi");
Generic arayüzinterface Box<T> { value: T; }
Generic aliastype Pair<A, B> = [A, B];
Generic sınıfclass Stack<T> { items: T[] = []; }
extends ile kısıtfunction len<T extends { length: number }>(x: T) { return x.length; }
Varsayılan tip parametresiinterface Box<T = string> { value: T; }
keyof operatörütype K = keyof User; // "id" | "name"
İndeks erişim tipitype Name = User["name"];

Narrowing

Çalışma zamanında bir union'ı tek bir tipe indirgeyin.

İşlemSözdizimi
typeof kontrolüif (typeof x === "string") { … }
instanceof kontrolüif (e instanceof Error) { … }
in operatörüif ("name" in obj) { … }
Eşitlikle narrowingif (status === "done") { … }
Truthiness ileif (value) { … }
Özel type guardfunction isUser(x: any): x is User { return "id" in x; }
Discriminated uniontype Shape = { kind: "sq"; size: number } | { kind: "ci"; r: number };
never ile tamlık kontrolüconst _: never = shape;

Enum'lar

Adlandırılmış sabit kümeleri.

İşlemSözdizimi
Sayısal enumenum Direction { Up, Down, Left, Right }
String enumenum Status { Idle = "IDLE", Done = "DONE" }
Bir değer kullanlet d: Direction = Direction.Up;
Const enum (inline)const enum Color { Red, Green, Blue }
Literal union (modern)type Status = "idle" | "done";

Utility type'lar

Mevcut tipleri dönüştüren yerleşik yardımcılar.

İşlemSözdizimi
Tüm alanları opsiyonel yapPartial<User>
Tüm alanları zorunlu yapRequired<User>
Tüm alanları readonly yapReadonly<User>
Anahtarların alt kümesini seçPick<User, "id" | "name">
Bir veya birden çok anahtarı çıkarOmit<User, "password">
Verilen anahtarlardan nesneRecord<string, number>
Union'dan dışlaExclude<"a" | "b" | "c", "a">
Union'dan sadece tutExtract<"a" | "b", "a" | "c">
null / undefined kaldırNonNullable<string | null>
Fonksiyon dönüş tipiReturnType<typeof fn>
Parametre tuple'ıParameters<typeof fn>
Awaited promise tipiAwaited<Promise<string>>

Modüller

Dosyalar arası import ve export.

İşlemSözdizimi
Adlı exportexport function add(a: number, b: number) { … }
Varsayılan exportexport default class User { … }
Re-exportexport { User } from "./user";
Adlı importimport { add } from "./math";
Varsayılan importimport User from "./user";
Sadece tip import'uimport type { User } from "./user";
Her şeyi içe aktarimport * as math from "./math";
Triple-slash referans/// <reference types="node" />

tsconfig temelleri

Bilmeye değer derleyici bayrakları.

SeçenekEtki
"strict": trueTüm strict-mode kontrollerini açar (önerilir).
"target": "ES2022"tsc'nin ürettiği JavaScript sürümü.
"module": "ESNext"Çıktıdaki modül sistemi.
"moduleResolution": "bundler"Modülleri modern bundler'lar gibi çözer.
"jsx": "react-jsx"React 17+ için JSX'i etkinleştirir.
"esModuleInterop": trueCommonJS modüllerinden daha temiz default import'lar.
"skipLibCheck": truenode_modules için tip kontrolünü atlar (hızlı build).
"noEmit": trueSadece tip kontrolü — çıktıyı bundler üretir.

Günlük olarak en çok kullandığın TypeScript sözdizimi tek sayfada. Bu TypeScript hile sayfası, günlük TS kullanımı için hızlı bir referanstır: temel tipler, arayüzler, type alias'lar, generic'ler, union'lar, narrowing ve yerleşik utility type'lar.

Buradaki her şey tsc ile derlenen ve modern JavaScript'in çalıştığı her yerde çalışan standart TypeScript'tir. İhtiyacın olanı kopyala veya herhangi bir parçayı TypeScript playground'unda canlı dene — kurulum gerekmez.

TypeScript hile sayfası SSS

Bu TypeScript hile sayfası ücretsiz mi?
Evet. Bu TypeScript hile sayfası tamamen ücretsizdir, kayıt gerekmez. Yer imlerine ekle ve bir tip, arayüz veya utility type'a bakman gerektiğinde geri dön.
Interface ile type alias arasındaki fark nedir?
İkisi de bir nesnenin şeklini tanımlayabilir ve günlük kullanımın çoğunda birbirinin yerine geçebilirler. Interface'ler dosyalar arasında yeniden açılıp genişletilebilir (declaration merging), bu kütüphane tipleri için kullanışlıdır. Type alias'lar union, intersection, tuple ve mapped type'ları adlandırabilir — interface ile ifade edemediğin şekiller. Yaygın kural: genel nesne şekilleri için interface, union'lar, tuple'lar ve hesaplanan tipler için type kullan.
any ile unknown arasındaki fark nedir?
any tip kontrolünü tamamen devre dışı bırakır — derleyici onunla istediğin her şeyi yapmana izin verir. unknown tip-güvenlidir: kullanmadan önce daraltmalısın (typeof, instanceof veya bir type guard ile). JSON.parse veya fetch gibi dış kaynaklardan gelen değerler için unknown tercih et — kullanmadan önce doğrulamaya zorlar.
TypeScript'ten önce JavaScript öğrenmem gerekir mi?
Evet — TypeScript üzerine tip sistemi eklenmiş JavaScript'tir, bu yüzden tüm JS becerilerin işine yarar. Hâlâ JS temellerini (diziler, nesneler, async/await) öğreniyorsan, JavaScript hile sayfası iyi bir başlangıçtır ve Coddy'nin ücretsiz JavaScript kursu aynı konuları etkileşimli olarak işler.
TypeScript'i online pratik edebilir miyim?
Evet. TypeScript playground'unu açarak bu hile sayfasındaki herhangi bir parçayı tarayıcında çalıştırabilirsin — kurulum gerekmez. Yapı istediğinde JavaScript landing'inden başla ve bu sayfadaki tipleri üzerine uygula.
Coddy programming languages illustration

Coddy ile TypeScript öğren

BAŞLA