Menu

Tipe Data TypeScript: string, number, boolean, dan Lainnya

Tipe bawaan TypeScript: string, number, boolean, bigint, symbol, null, dan undefined, ditambah sekilas tentang array dan objek. Cara menulis anotasi tipe, kenapa tidak ada tipe integer, dan kenapa kamu menulis string, bukan String.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Tipe di TypeScript mendeskripsikan jenis nilai yang bisa disimpan sebuah variabel. Kamu menulis tipe setelah titik dua, let name: string, dan compiler menolak kode apa pun yang memasukkan jenis nilai yang salah ke sana. Tipe dasarnya adalah tujuh tipe primitif JavaScript, ditambah object type untuk array dan objek.

Anotasi diperiksa saat kompilasi lalu dihapus. Program yang dijalankan adalah JavaScript biasa.

Tipe Primitif

TipeContoh nilaiCatatan
string"hi", 'hi', `hi ${name}`Teks. Ketiga gaya tanda kutip punya tipe yang sama.
number42, 3.14, -0.5, NaN, InfinitySemua angka, bulat maupun tidak. Tidak ada int atau float.
booleantrue, falseHanya dua nilai ini.
bigint10n, BigInt(10)Bilangan bulat berukuran berapa pun. Butuh target ES2020 atau lebih baru.
symbolSymbol("id")Nilai yang unik, kebanyakan dipakai sebagai key objek.
nullnull"Sengaja dikosongkan".
undefinedundefined"Belum diisi". Juga nilai yang terbaca dari property yang tidak ada.

Nama tipenya ditulis dengan huruf kecil. typeof saat runtime mengembalikan kata yang sama untuk sebagian besar tipe ini, jadi typeof x === "number" adalah cara memeriksa tipe primitif sebuah nilai saat program berjalan.

Anotasi Tipe

Anotasi adalah : Type setelah variabel, parameter, atau daftar parameter fungsi. Parameter adalah tempat anotasi paling penting, karena TypeScript tidak bisa menebak apa yang akan dikirim pemanggil.

Kalau variabel langsung diberi nilai di baris yang sama, anotasinya biasanya tidak perlu: let count = 10 sudah bertipe number. Aturan kapan tipe boleh tidak ditulis ada di halaman inferensi tipe.

Tipe yang Salah Adalah Error Kompilasi

Berikan nilai dengan tipe yang salah, dan compiler berhenti sebelum apa pun dijalankan:

Compiler mencetak:

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

Perbaikannya adalah mengonversi nilainya, port = Number("3000"), atau mengubah anotasinya kalau variabel itu memang seharusnya menyimpan teks.

number: Tidak Ada Tipe Integer

JavaScript menyimpan setiap angka sebagai nilai floating point 64-bit, jadi TypeScript hanya punya satu tipe number. Bilangan bulat akurat sampai Number.MAX_SAFE_INTEGER (2 ** 53 - 1). Di atas itu, pakai bigint.

bigint dan number tidak bisa dicampur: exact + 1 adalah error kompilasi (TS2365: Operator '+' cannot be applied to types 'bigint' and '1'., dengan '1' sebagai tipe literal dari 1) dan, seandainya dijalankan, juga TypeError saat runtime. Konversikan salah satu sisi secara eksplisit dengan BigInt(1) atau Number(exact), dengan catatan bahwa Number membulatkan nilai yang melewati batas aman.

Kalau kamu ingin tipe yang hanya menerima bilangan bulat, TypeScript tidak bisa mengekspresikannya untuk nilai sembarang. Validasi dengan Number.isInteger di tempat nilai itu masuk ke programmu.

boolean

boolean punya tepat dua nilai, true dan false. Nilai yang sekadar truthy (1, "yes") bukan boolean, jadi ubah menjadi boolean dengan Boolean(x) atau x !== 0.

null dan undefined

Dengan strict menyala (default sejak TypeScript 6.0), null dan undefined adalah tipe tersendiri dan bukan bagian dari string, number, atau tipe lain. Variabel yang mungkin kosong menyatakannya dengan union:

Membaca property dari nilai yang mungkin undefined adalah error kompilasi sampai kamu memeriksanya. Halaman null dan undefined membahas pemeriksaannya, ?., dan ??.

Sekilas tentang Array dan Objek

Apa pun yang bukan primitif adalah object type. Tiga bentuk yang pertama kali kamu temui:

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

Masing-masing punya halaman sendiri: array, tuple (array dengan panjang tetap), object type, dan function type.

string, number, boolean vs String, Number, Boolean

Nama berhuruf kapital adalah tipe dari objek pembungkus JavaScript (new String("x")), bukan tipe nilai biasa. Beri anotasi dengan nama berhuruf kecil.

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.

Ubah String menjadi string di baris pertama dan blok itu bisa dijalankan. Hal yang sama berlaku untuk Number, Boolean, Symbol, dan BigInt. (Object adalah kasus yang berbeda: tipe ini menerima hampir semua nilai, termasuk primitif; lihat object type.)

Tipe Bawaan Lainnya

Ada beberapa tipe lain yang muncul sejak awal. Masing-masing punya halaman sendiri.

TipeArti
anyMematikan pemeriksaan untuk nilai itu. Hindari.
unknownNilai apa pun, tetapi kamu wajib memeriksanya sebelum dipakai.
voidFungsi tidak mengembalikan apa pun yang berguna.
neverSama sekali tidak ada nilai: fungsi yang selalu melempar error, atau kasus yang mustahil.
objectNilai apa pun yang bukan primitif.
"red" | "green"Tipe literal: hanya nilai-nilai persis ini.

Pertanyaan yang sering diajukan

Apakah TypeScript punya tipe integer?

Tidak. number mencakup bilangan bulat dan desimal sekaligus, karena JavaScript menyimpan setiap angka sebagai float 64-bit. Periksa bilangan bulat saat runtime dengan Number.isInteger(n), dan pakai bigint (10n) kalau kamu butuh bilangan bulat yang lebih besar dari Number.MAX_SAFE_INTEGER (2 ** 53 - 1) tanpa kehilangan presisi.

Apa bedanya string dan String di TypeScript?

string adalah tipe primitif, yaitu tipe yang dimiliki string literal dan template string. String adalah tipe dari objek pembungkus yang dibuat oleh new String("x"). Selalu beri anotasi dengan huruf kecil string, number, dan boolean; memberikan String ke string adalah error kompilasi (TS2322).

Apa saja tipe primitif di TypeScript?

Sama dengan tujuh tipe di JavaScript: string, number, boolean, bigint, symbol, null, dan undefined. Selain itu (array, objek, fungsi, instance class) semuanya adalah object type.

Bagaimana cara mendeklarasikan variabel dengan tipe di TypeScript?

Tulis titik dua dan tipenya setelah nama: let count: number = 0;. Untuk fungsi, beri anotasi pada setiap parameter dan, kalau mau, tipe kembaliannya: function add(a: number, b: number): number. Kalau variabel langsung diberi nilai awal, biasanya kamu bisa menghilangkan anotasinya dan membiarkan TypeScript menyimpulkannya.

Apakah tipe TypeScript ada saat runtime?

Tidak. Compiler memeriksa tipe lalu menghapusnya, jadi JavaScript yang dijalankan tidak punya anotasi. Saat runtime, kamu memeriksa nilai dengan operator JavaScript seperti typeof, Array.isArray, dan instanceof.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai