TypeScript Dokümantasyonu
Kısa ve örneklerle anlatılan TypeScript kaynağı. Kavramı oku, kodu gör, sonra Coddy yolculuğunda uygula.
Rehberli bir TypeScript yolculuğuna başlaBaşlarken
- TypeScript NedirTypeScript nedir? Statik tipli JavaScript'tir. Değerlere tip yazarsınız, derleyici bunları kod çalışmadan önce kontrol eder ve çıktı her tarayıcıda, Node.js, Deno ve Bun'da çalışan düz JavaScript'tir.
- TypeScript vs JavaScriptTypeScript, kod çalışmadan önce kontrol edilen statik bir tip sistemi eklenmiş JavaScript'tir. İkisini yan yana karşılaştırın: sözdizimi, tip denetleyicisinin yakaladıkları, derleme adımı, çalışma hızı, öğrenme eğrisi ve bir JavaScript projesinin nasıl taşınacağı.
- TypeScript KurulumuTypeScript'i npm ile projeye geliştirme bağımlılığı olarak kurun, sürümü npx tsc --version ile kontrol edin, tsc --init ile bir tsconfig.json oluşturun ve ilk dosyanızı derleyin. Global kurulum, pnpm, Yarn, Bun ve sık karşılaşılan hatalar dahil.
- TypeScript ÇalıştırmaBir .ts dosyasını çalıştırmanın beş yolu: tsc ile derleyip JavaScript'i çalıştırmak, node file.ts ile doğrudan çalıştırmak (type stripping), tsx veya ts-node kullanmak ya da Deno ve Bun. Hangisi tip kontrolü yapar, hangisi hangi sözdizimini destekler ve hangisi seçilmeli.
- tsconfig.jsontsconfig.json bir klasörü TypeScript projesi olarak işaretler ve derleyici seçeneklerini belirler. Önemli seçenekler (target, module, moduleResolution, strict, rootDir, outDir, include, lib, types, noEmit, skipLibCheck), önerilen bir başlangıç yapılandırması, extends ve TypeScript 7'nin değiştirdikleri.
- TypeScript 7TypeScript 7, Go ile yerel bir program olarak yeniden yazılmış TypeScript derleyicisidir: yaklaşık on kat daha hızlı, aynı tsc komutu ve aynı dil. Kullanıcılar için değişenler (yeni varsayılanlar, kaldırılan seçenekler, eksik JavaScript API'si), hâlâ TypeScript 6 gerektiren araçlar ve nasıl yükseltileceği.
- YorumlarTypeScript, JavaScript'in // ve /* */ yorumlarını ve editörlerin üzerine gelince gösterdiği JSDoc /** */ yorumlarını kullanır. Ayrıca birkaç özel yorumu okur: @ts-expect-error, @ts-ignore, @ts-nocheck, @ts-check ve /// <reference> direktifleri.
- TypeScript vs PythonTypeScript ve Python ikisi de yüksek seviyeli, çöp toplayıcılı dillerdir; ama TypeScript tiplerini kod çalışmadan önce kontrol eder, Python'un type hint'leri ise isteğe bağlıdır ve çalışma zamanında yok sayılır. Tipler, çalışma ortamı, hız, ekosistem ve kullanım alanlarının iki dilde aynı programla karşılaştırması.
Temel tipler
- Temel TiplerTypeScript'in yerleşik tipleri: string, number, boolean, bigint, symbol, null ve undefined, ayrıca kısaca diziler ve nesneler. Tip notasyonu nasıl yazılır, neden bir tam sayı tipi yoktur ve neden String yerine string yazılır.
- Tip ÇıkarımıTypeScript tiplerin çoğunu yazdığınız değerlerden çıkarır. Değişkenler, let ile const, nesneler, diziler ve dönüş değerleri için neyi çıkardığını, callback'lerin tiplerini bağlamdan nasıl aldığını ve hâlâ nerede notasyon gerektiğini öğrenin.
- String'lerTypeScript'te string'lerle çalışmak: template literal ile interpolasyon, çok satırlı string'ler, bir string'in bir alt string içerip içermediğini kontrol etmek, yaygın metotlar ve döndürdükleri tipler, string literal tipleri.
- String'den SayıyaTypeScript'te bir string'i Number(), parseInt(), parseFloat() veya tekli + ile sayıya çevirin; her birinin "42px", "" ve "1e3" gibi girdileri nasıl ele aldığını görün, NaN kontrolünü güvenle yapın ve sayıları tekrar string'e çevirin.
- DizilerTypeScript'te dizilere nasıl tip verilir: T[] ile Array<T>, nesne dizileri, birden fazla tip tutan diziler, readonly diziler ve map, filter, reduce ile find'ın ne döndürdüğü. Ayrıca literal dizilerde includes tuzağı.
- Tuple'larTypeScript tuple, eleman sayısı sabit olan ve tipleri konuma göre bilinen bir dizidir, örneğin [string, number]. Sözdizimini, isimli, opsiyonel ve rest elemanları, readonly tuple'ları ve as const'u, fonksiyonlardan tuple döndürmeyi ve tuple'ların dizilerden farkını öğrenin.
- Nesne TipleriTypeScript'te nesnelere nasıl tip verilir: satır içi nesne tipleri, ? ile opsiyonel özellikler, readonly özellikler, iç içe nesneler, metotlar, fazla özellik kontrolü ve object, {} ile Object arasındaki fark.
- Enum'larTypeScript enum, enum Direction { Up, Down } gibi adlandırılmış bir sabitler kümesidir. Sayısal ve string enum'ları, bir enum'ın derlendiği JavaScript'i, reverse mapping'i, bir enum üzerinde dolaşmayı, const enum'ları ve string literal union'ının ya da as const nesnesinin ne zaman daha iyi olduğunu öğrenin.
Özel tipler
- Literal TiplerLiteral tip, "GET" veya 404 gibi tam olarak tek bir değeri olan bir tiptir. String, number ve boolean literal tiplerini, literal union'larını, let'in neden genişleyip const'un genişlemediğini, as const'un ne yaptığını ve const tip parametrelerini öğrenin.
- any vs unknownany ve unknown her değeri kabul eder. any o değer için tip kontrolünü kapatır, unknown ise değeri kullanmadan önce kontrol etmenizi ister. Farkları, unknown'ın nasıl daraltılacağını, noImplicitAny'yi ve any'nin tipli koda nereden sızdığını öğrenin.
- never Tipinever, hiç değeri olmayan tiptir. Hiç bitmeyen fonksiyonların dönüş tipi, daraltma her durumu elediğinde geriye kalan tip ve kapsamlı switch kontrollerinin arkasındaki araçtır. Nereden geldiğini ve void'den nasıl ayrıldığını öğrenin.
- null ve undefinedstrictNullChecks açıkken null ve undefined, TypeScript'in ele almanızı istediği ayrı tiplerdir. Onları nasıl kontrol edeceğinizi, optional chaining'i (?.), çift soru işaretini (??) ve ??= operatörünü, opsiyonel özellik ile | undefined arasındaki farkı öğrenin.
- Non-Null Assertion (!)user! gibi bir değerden sonra gelen ünlem işareti non-null assertion operatörüdür: hiçbir çalışma zamanı kontrolü yapmadan null ve undefined tiplerini tipten çıkarır. x! ifadesinin ne yaptığını, let x!: T ve prop!: T kesin atama biçimlerini, neden riskli olduklarını ve daha güvenli alternatifleri öğrenin.
Arayüzler ve tip takma adları
- Interface'lerBir interface, bir nesnenin biçimine ad verir: hangi özelliklere sahip olduğunu ve bunların hangi tipleri tuttuğunu. Nasıl tanımlanacağını, opsiyonel ve readonly özellikleri, metotları, index signature'ları, genişletmeyi, bir sınıfta implement etmeyi, declaration merging'i, generic interface'leri ve bir interface'e nasıl varsayılan değer verileceğini öğrenin.
- Type Alias'larBir type alias, type anahtar kelimesiyle herhangi bir tipe ad verir: nesne biçimleri, union'lar, tuple'lar, fonksiyonlar, generic'ler ve özyinelemeli tipler. Sözdizimini, her biçimin nasıl göründüğünü ve bir alias'ın neden yalnızca bir ad olduğunu, yeni ve ayrı bir tip olmadığını öğrenin.
- Interface vs Typeinterface ve type ikisi de nesne biçimlerini tanımlayabilir ve çoğu zaman ikisi de iş görür. Gerçek farkları öğrenin: declaration merging, union'lar ve mapped tipler, extends ile intersection'lar, örtük index signature'lar, hata bildirimi ve derleyici performansı, ayrıca seçim için net bir kural.
- extends Anahtar Kelimesiextends anahtar kelimesi bir tipi başka bir tipten oluşturur. Bir interface'i (bir kez ya da birkaç tanesinden) genişletmeyi, bir type alias'ı & ile genişletmeyi, bir özellik tipini geçersiz kılmayı, özellikleri Omit ile değiştirmeyi ve extends'in sınıflarda, generic kısıtlarında ve conditional tiplerde ne anlama geldiğini öğrenin.
- Union Tiplerstring | number gibi bir union tip, bir değerin birkaç tipten herhangi biri olabileceği anlamına gelir. Bir union ile neler yapabileceğinizi (yalnızca her üyenin desteklediklerini), onu nasıl daraltacağınızı, literal ve nesne tiplerinin union'larını ve (A | B)[] ile A[] | B[] arasındaki farkı öğrenin.
- Intersection TiplerA & B şeklindeki bir intersection tip, aynı anda hem A hem B olan bir değeri tanımlar, yani ikisinin de her üyesine sahiptir. Nesne tiplerini & ile birleştirmeyi, çakışan özelliklerin neden never olduğunu, union intersection'larının neden yalnızca ortak üyeleri tuttuğunu ve ne zaman extends kullanılacağını öğrenin.
- Discriminated Union'larDiscriminated union, kind veya status gibi ortak bir literal etiket özelliği paylaşan nesne tiplerinin union'ıdır. Etiketi kontrol etmek nesnenin tamamını daraltır. Kalıbı, switch ile daraltmayı, never ile kapsamlı kontrolleri ve API sonuçlarını, istek durumunu ve durum makinelerini nasıl modelleyeceğinizi öğrenin.
Fonksiyonlar
- FonksiyonlarTypeScript'te fonksiyonlara nasıl tip verilir: her parametreye notasyon yazın, dönüş tipini yazın ya da çıkarılmasına bırakın, hiçbir şey döndürmeyen fonksiyonlar için void kullanın ve arrow function'lara, function expression'lara, async fonksiyonlara ve this parametresine tip verin.
- Fonksiyon TipleriTypeScript'te bir fonksiyonun tipi nasıl yazılır: arrow sözdizimi (a: number) => string, fonksiyonlar için type alias'lar, arrow function'lara ve callback'lere tip vermek, call ve construct signature'lar ve Function tipinin neden fazla gevşek olduğu.
- Opsiyonel ParametrelerBir TypeScript parametresini ? ile opsiyonel yapın, ona varsayılan bir değer verin ya da bir rest parametresiyle istediğiniz sayıda argümanı toplayın. Sıralama kuralları, atlamak ile undefined farkı, seçenek nesneleri ve fonksiyon tiplerinde opsiyonel parametreler.
- Function OverloadingTypeScript function overload'ları, bir fonksiyonun her biri kendi dönüş tipine sahip birkaç çağrı imzasına sahip olmasını sağlar. Overload imzaları artı gerçekleme kalıbını, derleyicinin kontrol ettiği kuralları, bir union parametrenin ne zaman daha iyi olduğunu ve sınıflardaki overload'ları öğrenin.
Daraltma ve tip kontrolü
- Tip DaraltmaDaraltma (narrowing), TypeScript'in string | number gibi geniş bir tipi bir if, bir switch içinde ya da erken bir return sonrasında belirli bir tipe dönüştürme şeklidir. Tüm daraltma biçimleri tek yerde: typeof, truthiness, eşitlik, in, instanceof, atamalar, type predicate'ler ve discriminated union'lar.
- typeof Operatörütypeof TypeScript'te iki iş yapar. Kodda, çalışma zamanında "string", "number", "object" gibi değerler döndüren JavaScript operatörüdür ve TypeScript onun üzerinden daraltır. Bir tipte ise keyof typeof obj ve ReturnType<typeof fn> örneklerindeki gibi bir değişkenin tipini kopyalayan tip sorgusudur.
- instanceof Operatörüinstanceof, bir nesnenin bir sınıf tarafından oluşturulup oluşturulmadığını çalışma zamanında kontrol eder ve TypeScript değişkeni o sınıfa daraltır. Kendi sınıflarınız ve Error alt sınıflarıyla nasıl çalıştığı, neden interface'leri veya type alias'ları kontrol edemediği ve nerede şaşırtıcı cevaplar verdiği.
- Type Guard'larType guard, TypeScript'in anladığı bir çalışma zamanı kontrolüdür. Yerleşik guard'ları, value is Type predicate'iyle kendinizinkini nasıl yazacağınızı, bir nesnenin belirli bir tipte olup olmadığını nasıl kontrol edeceğinizi, asserts ile assertion fonksiyonlarını ve unknown verinin nasıl doğrulanacağını öğrenin.
- Type Assertion'laras anahtar kelimesi TypeScript'e bir değeri farklı bir tip olarak ele almasını söyler. Bir cast değildir: çalışma zamanında hiçbir şey dönüştürülmez veya kontrol edilmez. as ve açılı parantez sözdizimini, derleyicinin neye izin verdiğini, unknown üzerinden çift assertion'ları ve bir type guard'ın ne zaman daha iyi bir araç olduğunu öğrenin.
- satisfies Operatörüsatisfies operatörü, bir değerin bir tiple eşleştiğini değerin çıkarılan tipini değiştirmeden kontrol eder. Ne yaptığını, bir tip notasyonu ve as ile nasıl karşılaştırıldığını (aynı nesne üç şekilde yazılmış), as const ile nasıl birleştiğini ve neden yapılandırma nesnelerine uyduğunu öğrenin.
Sınıflar
- SınıflarTypeScript sınıfları, tipli alanlara, metotlara ve constructor'lara sahip JavaScript sınıflarıdır. Alan bildirimlerinin ve strictPropertyInitialization'ın nasıl çalıştığını, this'e nasıl tip verileceğini, getter ve setter'ları, statik üyeleri, implements'i ve bir sınıfın nasıl aynı zamanda bir tip olduğunu öğrenin.
- Constructor'larTypeScript'te bir sınıf constructor'ına nasıl tip verilir: tipli ve opsiyonel parametreler, constructor(private name: string) gibi parametre özellikleri, alanların başlatılma sırası, constructor overload'ları, alt sınıflarda super çağrısı, private constructor'lar ve new ile constructor tipleri.
- Erişim BelirleyicilerTypeScript'te üç erişim belirleyici vardır: public, private ve protected, bunlara ek olarak readonly. Her birinin neye izin verdiğini, TypeScript'teki private'ın neden bir derleme zamanı kontrolü olduğunu, JavaScript #private alanlarının ise çalışma zamanında nasıl korunduğunu ve hangisini seçeceğinizi öğrenin.
- KalıtımTypeScript'te sınıf kalıtımı: extends ve super, metotları uyumlu tiplerle override etmek, override anahtar kelimesi ve noImplicitOverride, protected üyeler, alanları declare ile yeniden bildirmek ve implements'in ne zaman daha iyi bir araç olduğu.
- Soyut SınıflarTypeScript'te abstract class, örneği oluşturulamayan ve bazı metotları alt sınıfların implement etmesine bırakabilen bir temel sınıftır. Abstract metotları ve özellikleri, template method kalıbını, abstract constructor tiplerini ve bir interface'in ne zaman daha iyi bir seçim olduğunu öğrenin.
- Decorator'larDecorator'lar, sınıf üyelerini @ sözdizimiyle saran ya da değiştiren fonksiyonlardır. TypeScript'in hiçbir bayrak olmadan desteklediği standart decorator'ları (sınıf, metot, getter, alan ve accessor), decorator factory'lerini, addInitializer'ı ve Angular ile NestJS'in kullandığı eski experimentalDecorators modelinden farklarını öğrenin.
Jenerikler
- GenericsGenerics, bir fonksiyonun, interface'in, tipin ya da sınıfın tipleri birbirine bağlı tutarak birçok tiple çalışmasını sağlar: giren şey çıkan şeyi belirler. Generic fonksiyonları, tip argümanı çıkarımını, birden fazla tip parametresini, generic interface ve sınıfları, varsayılan tipleri ve generics'in ne zaman kullanılmaması gerektiğini öğrenin.
- Generic KısıtlamalarıBir generic kısıtlaması (T extends Something), bir tip parametresinin hangi tipleri kabul ettiğini sınırlar ve fonksiyonun kısıtlamanın garanti ettiği şeyleri kullanmasına izin verir. Nesne biçimleri ve interface'lerle extends, güvenli özellik erişimi için K extends keyof T, primitive tiplerle kısıtlamalar ve karşılaşacağınız hatalar.
Tip operatörleri
- keyof Operatörükeyof bir nesne tipi alır ve size özellik adlarının union'ını verir. keyof'u interface'lerle, düz nesneler için keyof typeof'u, generics ile tipli özellik erişimini, indeks imzalarını (string | number) ve Object.keys'in neden string[] döndürdüğünü öğrenin.
- İndeksli Erişim Tipleriİndeksli erişim tipi (indexed access type), bir özelliğin tipini başka bir tipin içinden okur: Person["age"] tipi number olur. T["key"], union anahtarlar, T[keyof T], dizi elemanları için T[number], tuple indeksleri ve bir const diziyi union'a çevirmek için (typeof arr)[number] konularını öğrenin.
- Mapped TypesMapped type, anahtarlar üzerinde dönerek yeni bir nesne tipi oluşturur: { [K in keyof T]: ... }. Sözdizimini, +/- ile readonly ve ? belirleyicilerini, as ile anahtar yeniden eşlemeyi, anahtarları filtrelemeyi ve Partial, Readonly, Required, Pick ile Record'un nasıl yazıldığını öğrenin.
- Koşullu TiplerKoşullu tip, bir teste göre iki tipten birini seçer: T extends U ? X : Y. Sözdizimini, koşullu tiplerin union'lar üzerinde nasıl dağıldığını (ve bunun nasıl durdurulacağını), infer ile tip çıkarmayı ve ReturnType'ı kendiniz nasıl yazacağınızı öğrenin.
- Template Literal TiplerTemplate literal tipler, JavaScript template string'leriyle aynı backtick sözdizimiyle string literal tipler oluşturur: `on${Capitalize<E>}`. Sözdizimini, union'ların nasıl çoğaldığını, Uppercase ve Capitalize'ı, `${number}px` gibi kalıpları, mapped type ile getter'ları ve infer ile string ayrıştırmayı öğrenin.
- Branded TypesBranded type, görünmez bir etiket taşıyan bir primitive tiptir; örneğin string & { readonly __brand: "UserId" }. Böylece bir OrderId beklenen yere bir UserId geçirilemez. Brand'lerin nasıl çalıştığını, doğrulama yapan constructor fonksiyonlarını, generic bir Brand yardımcısını, unique symbol brand'lerini ve branded number'ları öğrenin.
Yardımcı tipler
- Utility TypesTypeScript'in yerleşik utility type'larının hepsi tek yerde: Partial, Required, Readonly, Pick, Omit, Record, Exclude, Extract, NonNullable, Parameters, ReturnType, Awaited, string tipleri ve daha fazlası; her biri tek satırlık bir açıklama ve çalıştırılabilir bir örnekle.
- RecordRecord<K, V>, anahtarları K ve değerlerinin hepsi V olan nesne tipidir. String anahtarlı ve union anahtarlı (her anahtar zorunlu) Record'u, Partial<Record>'u, tipli anahtarlarla bir Record üzerinde döngüyü, eksik anahtar tuzağını ve ne zaman index signature ya da Map kullanılacağını öğrenin.
- Partial ve RequiredPartial<T>, T tipinin her özelliğini isteğe bağlı yapar; bu da tam olarak bir güncelleme ya da patch nesnesinin tipidir. Güncelleme fonksiyonlarında Partial'ı, neden sığ olduğunu, bir DeepPartial nasıl yazılacağını, açık undefined tuzağını ve tersi olan Required<T> tipini öğrenin.
- OmitOmit<T, K>, T tipinin K anahtarları dışındaki tüm özelliklerini içeren bir tip oluşturur. Tek ve birden fazla anahtarla Omit'i, bir özelliğin tipini ezmeyi, özelliği çalışma zamanında silmeyi, Omit ile Exclude ve Pick farkını, Omit'in neden var olmayan anahtarları kabul ettiğini, katı bir Omit'i ve union tiplerde Omit'i öğrenin.
- PickPick<T, K>, T tipinin yalnızca anahtarları K içinde olan özelliklerini içeren bir tip oluşturur. Tek ya da birden fazla anahtarla Pick'i, anahtarları nasıl kontrol ettiğini, Pick ile Omit farkını, iç içe tiplerden seçmeyi, tipli bir pick() fonksiyonunu ve özellikleri değer tiplerine göre seçmeyi öğrenin.
- readonly ve Readonlyreadonly değiştiricisi ve Readonly<T> utility type'ı, kodun özellikleri yeniden atamasını engeller. readonly özellikleri ve class alanlarını, Readonly<T> tipini, readonly dizileri (readonly T[] ve ReadonlyArray), ReadonlyMap ve ReadonlySet'i, readonly'nin neden sığ ve yalnızca derleme zamanına ait olduğunu ve Object.freeze ile as const karşısındaki yerini öğrenin.
- Exclude ve ExtractExclude, Extract ve NonNullable bir union tipinin üyelerini filtreler. Her birinin neyi tutup neyi çıkardığını, union üyelerini şekillerine göre nasıl seçeceğinizi, conditional type'lardan nasıl kurulduklarını ve Omit ile Pick'ten nasıl ayrıldıklarını öğrenin.
- ReturnType ve ParametersReturnType, Parameters, ConstructorParameters, InstanceType ve Awaited; fonksiyonlardan, class'lardan ve promise'lerden tip çıkarır. Onları typeof ile nasıl kullanacağınızı, bir async fonksiyonun sonuç tipini nasıl alacağınızı, overload'lar ve generic'lerde ne olduğunu ve ReturnType'ın infer ile nasıl kurulduğunu öğrenin.
Döngüler ve koleksiyonlar
- DöngülerTypeScript'te döngü kurmanın tüm yolları ve her birinin size verdiği tipler: klasik for döngüsü, diziler, map'ler ve string'ler üzerinde for...of, for...in ve string anahtarları, forEach (break yok, await yok), nesne anahtarları üzerinde tipli döngüler ve while.
- Switch İfadesiTypeScript'te switch ifadesi: sözdizimi, her case'in bir union tipini nasıl daralttığı, bir case eksik olduğunda derlenmeyen exhaustive switch'ler, switch (true) deseni, fallthrough ve blok kapsamı.
- MapTypeScript'te Map nasıl kullanılır: tipli bir Map<K, V> oluşturmak, get metodunun neden V | undefined döndürdüğü, set, has ve delete, ekleme sırasıyla döngü, nesne anahtarları, nesnelere ve JSON'a dönüştürme, Map, nesne ve Record karşılaştırması ve array.map() tiplemesi.
- DictionaryTypeScript'te ayrı bir dictionary ya da hashmap class'ı yoktur; anahtar-değer eşlemesini index signature, Record<K, V> ya da Map<K, V> ile tiplersiniz. Her birini, bir anahtarın var olup olmadığını kontrol etmeyi, ekleme, silme ve döngüyü ve noUncheckedIndexedAccess seçeneğinin dictionary'ler için neden önemli olduğunu öğrenin.
Asenkron kod ve hatalar
- Promise'lerPromise'ler TypeScript'te nasıl tiplenir: Promise<T> tipi, new Promise ve resolve'un tiplenmesi, then'in tipi nasıl değiştirdiği, catch'in neden any verdiği, tuple sonuçlu Promise.all, Promise.allSettled sonuç tipleri ve callback API'lerini tipli bir promise ile sarmak.
- Async/Awaitasync ve await TypeScript'te nasıl tiplenir: bir async fonksiyon Promise<T> döndürür, await onu açar, hatalar try/catch ile yakalanır, top-level await bir ES modülü gerektirir; ayrıca tek tek beklemek, paralel beklemek ve forEach tuzağı arasındaki fark.
- Hata YönetimiTypeScript'te hata yönetimi: catch değişkeninin neden unknown olduğu, instanceof Error ile nasıl daraltılacağı, hata fırlatmak, name ve cause içeren özel hata class'ları yazmak ve beklenen hatalar için Result tipi kalıbı.
- SleepTypeScript'te yerleşik bir sleep yoktur, ama tek bir satır size bir tane verir: setTimeout ile resolve olan bir Promise<void> döndüren bir fonksiyon. Onu await etmeyi, döngü içinde duraklamayı, gecikmeyle yeniden denemeyi, bir sleep'i iptal etmeyi ve JavaScript'te neden bloklayan bir sleep olmadığını öğrenin.
Modüller ve araçlar
- ModüllerEn üst seviyede bir import ya da export içeren her TypeScript dosyası bir modüldür. Named ve default export'ları, import type ve export type'ı, module ayarının ES modülü ile CommonJS çıktısı arasında nasıl seçim yaptığını ve node16 ile nodenext'in import'larda neden .js uzantısı istediğini öğrenin.
- Namespace'lerBir TypeScript namespace'i değerleri ve tipleri tek bir ad altında toplar ve düz bir nesneye derlenir. Söz dizimini, namespace'lerin birbirleriyle ve fonksiyon ve class'larla nasıl birleştiğini, ES modüllerinin neden onların yerini aldığını ve onlarla hâlâ nerede karşılaştığınızı öğrenin: declaration dosyaları ve global augmentation.
- Declaration DosyalarıBir .d.ts dosyası JavaScript kodunun tiplerini, o kodun hiçbir parçasını içermeden tanımlar; declare anahtar kelimesi de bir .ts dosyasının içinde aynı işi yapar. Declaration dosyalarının nasıl üretildiğini, @types paketlerinin nereye oturduğunu, tipsiz bir modülün nasıl tipleneceğini ve declare global ile module augmentation'ın var olan tipleri nasıl genişlettiğini öğrenin.
- Strict Modetsconfig.json içindeki strict: true bir grup tip kontrolünü açar: noImplicitAny, strictNullChecks, strictPropertyInitialization ve beş tane daha. Her birinin neyi yakaladığını, var olan bir projede strict mode'u nasıl açacağınızı ve strict'in içermediği faydalı bayrakları görün.
- JSONJSON.parse any döndürür, bu yüzden TypeScript sonuca verdiğiniz her tipe güvenir. Parse edilen JSON'u tiplemeyi, bir type guard ile doğrulamayı, bir JSON örneğini interface'e çevirmeyi, .json dosyalarını import etmeyi ve JSON.stringify'ın Date, Set ve undefined değerlerine ne yaptığını öğrenin.
Daha ileri
- Best PracticesGerçek hataları önleyen sekiz TypeScript alışkanlığı: strict'i açık tutun, any yerine unknown kullanın, tip çıkarımını çalıştırın, enum yerine union tercih edin, config'i satisfies ile kontrol edin, durumu discriminated union ile modelleyin, ! ve as kullanmaktan kaçının ve veriyi readonly yapın. Her biri çalıştırılabilir bir önce ve sonra örneğiyle gelir.
- Mülakat SorularıBaşlangıçtan ileri seviyeye gruplanmış, kısa ve doğru cevaplı ve kodlu 25 TypeScript mülakat sorusu: any ve unknown, interface ve type, generics, narrowing, utility type'lar, mapped ve conditional type'lar, structural typing, tsconfig ve TypeScript 7.