Menu

TypeScript Veri Tipleri: string, number, boolean ve Diğerleri

TypeScript'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.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

TypeScript tipleri, bir değişkenin ne tür bir değer tutabileceğini tanımlar. Tipi iki nokta üst üsteden sonra yazarsınız, let name: string, ve derleyici oraya yanlış türde bir değer koyan her kodu reddeder. Temel tipler, yedi JavaScript primitive'i ile diziler ve nesneler için nesne tipleridir.

Notasyonlar derleme zamanında kontrol edilir ve sonra silinir. Çalışan program düz JavaScript'tir.

Primitive Tipler

TipÖrnek değerlerNotlar
string"hi", 'hi', `hi ${name}`Metin. Üç tırnak stilinin tipi de aynıdır.
number42, 3.14, -0.5, NaN, InfinityTam olsun olmasın her sayı. int veya float yoktur.
booleantrue, falseYalnızca bu iki değer.
bigint10n, BigInt(10)Her boyutta tam sayı. ES2020 veya sonrası target gerekir.
symbolSymbol("id")Benzersiz bir değer, çoğunlukla nesne anahtarı olarak kullanılır.
nullnull"Bilerek boş".
undefinedundefined"Ayarlanmamış". Olmayan bir özellik okunduğunda da bu gelir.

Tip adları küçük harflidir. Çalışma zamanında typeof çoğu için aynı kelimeleri döndürür; yani program çalışırken bir değerin primitive tipini typeof x === "number" ile kontrol edersiniz.

Tip Notasyonları

Notasyon, bir değişkenden, bir parametreden ya da bir fonksiyonun parametre listesinden sonra gelen : Type ifadesidir. Notasyonların en çok önem taşıdığı yer parametrelerdir, çünkü TypeScript çağıranın ne göndereceğini tahmin edemez.

Bir değişkene aynı satırda başlangıç değeri verildiğinde notasyon genellikle gereksizdir: let count = 10 zaten number tipindedir. Tipleri yazmamanın kuralları tip çıkarımı sayfasında.

Yanlış Tip Bir Derleme Hatasıdır

Yanlış tipte bir değer atayın, derleyici hiçbir şey çalışmadan durur:

Derleyici şunu yazdırır:

index.ts(3,1): error TS2322: Type 'string' is not assignable to type 'number'.

Çözüm değeri dönüştürmektir, port = Number("3000"); ya da değişken gerçekten metin tutmalıysa notasyonu değiştirmektir.

number: Tam Sayı Tipi Yok

JavaScript her sayıyı 64 bitlik bir kayan nokta değeri olarak saklar, bu yüzden TypeScript'te tek bir number tipi vardır. Tam sayılar Number.MAX_SAFE_INTEGER (2 ** 53 - 1) değerine kadar kesindir. Bunun ötesinde bigint kullanın.

bigint ve number karışmaz: exact + 1 bir derleme hatasıdır (TS2365: Operator '+' cannot be applied to types 'bigint' and '1'.; burada '1', 1 değerinin literal tipidir) ve bir şekilde çalışsaydı çalışma zamanında da bir TypeError olurdu. Bir tarafı BigInt(1) veya Number(exact) ile açıkça dönüştürün; Number fonksiyonunun güvenli aralığın ötesindeki değerleri yuvarladığını unutmayın.

Yalnızca tam sayıları kabul eden bir tip istiyorsanız, TypeScript bunu keyfi değerler için ifade edemez. Değerin programınıza girdiği yerde Number.isInteger ile doğrulayın.

boolean

boolean tipinin tam olarak iki değeri vardır: true ve false. Yalnızca truthy olan değerler (1, "yes") boolean değildir; onları Boolean(x) veya x !== 0 ile boolean'a çevirin.

null ve undefined

strict açıkken (TypeScript 6.0'dan beri varsayılan) null ve undefined ayrı tiplerdir ve string, number ya da başka bir tipin parçası değildir. Boş olabilecek bir değişken bunu bir union ile belirtir:

undefined olabilecek bir değerin özelliğini okumak, siz onu kontrol edene kadar bir derleme hatasıdır. Kontrolleri, ?. ve ?? operatörlerini null ve undefined sayfası anlatıyor.

Kısaca Diziler ve Nesneler

Primitive olmayan her şey bir nesne tipidir. İlk karşılaşacağınız üç biçim:

let tags: string[] = ["ts", "js"];               // array of strings
let point: { x: number; y: number } = { x: 1, y: 2 }; // object with two number properties
let greet: (name: string) => string = (n) => `hi ${n}`; // function type

Her birinin kendi sayfası var: diziler, tuple'lar (sabit uzunluklu diziler), nesne tipleri ve fonksiyon tipleri.

string, number, boolean ile String, Number, Boolean

Büyük harfle başlayan adlar sıradan değerlerin değil, JavaScript'in sarmalayıcı nesnelerinin (new String("x")) tipleridir. Notasyonlarda küçük harfli adları kullanın.

index.ts(3,7): error TS2322: Type 'String' is not assignable to type 'string'.
  'string' is a primitive, but 'String' is a wrapper object. Prefer using 'string' when possible.

İlk satırdaki String kelimesini string yapın, blok çalışır. Aynısı Number, Boolean, Symbol ve BigInt için de geçerlidir. (Object farklı bir durumdur: primitive'ler dahil neredeyse her değeri kabul eder; nesne tiplerine bakın.)

Diğer Yerleşik Tipler

Birkaç tip daha erken karşınıza çıkar. Her birinin kendi sayfası var.

TipAnlamı
anyO değer için kontrolü kapatır. Kaçının.
unknownHerhangi bir değer, ama kullanmadan önce kontrol etmeniz gerekir.
voidBir fonksiyon işe yarar bir şey döndürmez.
neverHiç değer yok: her zaman hata fırlatan bir fonksiyon ya da imkansız bir durum.
objectPrimitive olmayan herhangi bir değer.
"red" | "green"Bir literal tip: yalnızca bu tam değerler.

Sıkça Sorulan Sorular

TypeScript'te bir tam sayı tipi var mı?

Hayır. number hem tam sayıları hem ondalıklı sayıları kapsar, çünkü JavaScript her sayıyı 64 bitlik bir float olarak saklar. Bir değerin tam sayı olup olmadığını çalışma zamanında Number.isInteger(n) ile kontrol edin; Number.MAX_SAFE_INTEGER (2 ** 53 - 1) değerinden büyük tam sayılara hassasiyet kaybı olmadan ihtiyacınız varsa bigint (10n) kullanın.

TypeScript'te string ile String arasındaki fark nedir?

string, string literal'lerinin ve template string'lerin sahip olduğu primitive tiptir. String ise new String("x") ile oluşturulan sarmalayıcı (wrapper) nesnenin tipidir. Notasyonlarda her zaman küçük harfli string, number ve boolean kullanın; bir String değerini bir string değişkenine atamak derleme hatasıdır (TS2322).

TypeScript'teki primitive tipler nelerdir?

JavaScript'tekiyle aynı yedi tip: string, number, boolean, bigint, symbol, null ve undefined. Geri kalan her şey (diziler, nesneler, fonksiyonlar, sınıf örnekleri) bir nesne tipidir.

TypeScript'te tipli bir değişken nasıl tanımlanır?

Addan sonra iki nokta üst üste ve tipi yazın: let count: number = 0;. Bir fonksiyonda her parametreye ve isteğe bağlı olarak dönüş tipine notasyon ekleyin: function add(a: number, b: number): number. Bir değişkene başlangıç değeri verildiğinde notasyonu genellikle yazmayıp TypeScript'in çıkarmasına bırakabilirsiniz.

TypeScript tipleri çalışma zamanında var mıdır?

Hayır. Derleyici tipleri kontrol eder ve sonra siler; yani çalışan JavaScript'te notasyon yoktur. Çalışma zamanında değerleri typeof, Array.isArray ve instanceof gibi JavaScript operatörleriyle kontrol edersiniz.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA