javascript - 'bigint' (küçük harf) ile 'BigInt' arasındaki fark nedir?


Yani, büyük sayılar için harici bir kütüphane kullanan bazı TypeScript kodlarını BigInt (ES2020) ile güncellemeye çalışıyorum ve linter çok sık şikayet ediyor. Burada neler olup bittiğini gerçekten anlamıyorum.

Görünüşe göre iki farklı tür var - 'bigint' ve 'BigInt' ve bu ikisi birbirleriyle uyumlu değil.

partialValue türünü 'bigint' olarak değiştirdiğimde hata ortadan kalkıyor. Bu, 'BigInt' yerine 'bigint' kullanmam mı gerektiği anlamına mı geliyor? Dokümantasyonda 'BigInt' olarak geçiyor. Oldukça kafa karıştırıcı, söylemeliyim.

Cevap #1

bigint (küçük harf) ECMAScript 2020 (ES2020)'de tanıtılmış yerleşik bir ilkel tiptir ve rastgele hassasiyette tam sayıları temsil etmek için kullanılır. Normal 'number' tipi kullanılarak doğru bir şekilde temsil edilemeyen büyük tam sayılarla çalışmak için kullanılır.

Öte yandan, 'BigInt' (büyük harf) 'bigint' örnekleri oluşturmak için kullanılan yapıcı (constructor) işlevidir. Global ad alanının bir parçasıdır ve 'BigInt()' işlevini kullanarak 'bigint' değerleri oluşturmanıza olanak tanır.

Kafa karışıklığı, 'bigint' ilkel türünün 'BigInt' yapıcı fonksiyon ile aynı ismi paylaşmasından kaynaklanmaktadır. Ancak, bunlar aynı şey değildir ve birbirinin yerine kullanılamazlar.

TypeScript'te, küçük harflerle yazılmış 'bigint' tür açıklamasını kullandığınızda, bir değişkenin tipinin 'bigint' olması gerektiğini açıkça belirtiyorsunuz. Örneğin:

let myNumber: bigint = BigInt(12345);

Yukarıdaki kodda, 'myNumber' küçük harf tip açıklaması kullanılarak açıkça bir 'bigint' olarak tanımlanmıştır.

Büyük harfli 'BigInt' kullandığınızda, bu bir primitive tür değil, constructor fonksiyonunu ifade eder. 'BigInt'i bir type annotation olarak kullanmaya çalışırsanız, TypeScript bunu 'bigint' ile uyumlu olmayan farklı bir tür olarak değerlendirir. Bu yüzden, türü 'BigInt' olarak değiştirdiğinizde hatalar görüyorsunuz.

İlgili makaleler