Objects and Arrays
Objek JavaScript merupakan kumpulan nilai-nilai yang
dibungkus menggunakan kata kunci yang memiliki nama.
// Anda dapat menggabungkan objek-objek ini untuk
membuat model data yang lebih besar dan lebih rumit.
const userAccount = {
name: "Kieron",
id: 0,
};
// Jika Anda menggunakan tetikus untuk mengarahkan
kursor ke beberapa kata ini (coba arahkan kursor
ke objek purchaseOrder di atas) Anda dapat melihat
bagaimana TypeScript menafsirkan JavaScript Anda menjadi
tipe data berlabel.
Nilai dapat diakses melalui ".", Jadi untuk mendapatkan
nama pengguna untuk pesanan pembelian:
const pie = {
type: "Apple",
};
const purchaseOrder = {
owner: userAccount,
item: pie,
};
// Jika Anda mengarahkan kursor tetikus ke setiap bagian kode
antara tanda (), Anda dapat melihat TypeScript menampilkan lebih banyak
informasi tentang tiap-tiap bagian. Coba tulis ulang kode di bawah ini:
Salin ini di baris berikutnya, karakter demi karakter:
purchaseOrder.item.type
TypeScript memberikan umpan balik ke area bermain
tentang objek JavaScript apa saja yang tersedia di berkas ini
dan memungkinkan Anda menghindari kesalahan ketik dan melihat tambahan
informasi tanpa harus mencarinya di tempat lain.
TypeScript juga menawarkan fitur yang sama untuk himpunan (_array_).
Berikut adalah himpunan yang isinya hanya pesanan pembelian
yang kita buat.
console.log(purchaseOrder.item.type);
// Jika Anda mengarahkan kursor ke allOrders, Anda dapat
mengetahui bahwa itu adalah himpunan karena info _hover_
diakhiri dengan []. Anda dapat mengakses
urutan pertama menggunakan tanda kurung siku dengan indeks
(mulai dari nol).
const allOrders = [purchaseOrder];
// Cara alternatif untuk mendapatkan objek adalah dengan memencet (_popping_)
himpunan untuk menghapus objek. Dengan melakukan ini, kita bisa
menghapus objek dari himpunan, dan mengembalikan objek. Ini disebut
mutasi himpunan, karena mengubah data di dalamnya.
const firstOrder = allOrders[0];
console.log(firstOrder.item.type);
// Sekarang allOrders menjadi kosong. Mutasi data dapat bermanfaat untuk
banyak hal, tapi satu cara untuk mengurangi kerumitan di
basis kode Anda adalah dengan menghindari mutasi. TypeScript menawarkan cara
untuk mendeklarasikan himpunan hanya baca (_read-only_):
Membuat tipe data berdasarkan bentuk pesanan pembelian:
const poppedFirstOrder = allOrders.pop();
// Ya! Agak lebih banyak kode memang. Ada empat
hal-hal baru di sini:
type PurchaseOrder - Menyatakan tipe data baru ke TypeScript.
typeof - Gunakan sistem inferensi tipe data (_type inference_) untuk
menyetel tipe data berdasarkan konstanta yang diteruskan berikutnya.
purchaseOrder - Dapatkan variabel purchaseOrder dan beri tahu
TypeScript ini adalah bentuk dari semua
objek didalam himpunan pesanan.
readonly - Objek ini tidak mendukung mutasi, sekali
objek ini dibuat maka isi himpunan
akan selalu sama.
Sekarang jika Anda mencoba untuk keluar dari readonlyOrders, TypeScript
akan memunculkan kesalahan.
type PurchaseOrder = typeof purchaseOrder;
// Membuat himpunan pesanan pembelian yang hanya bisa dibaca
const readonlyOrders: readonly PurchaseOrder[] = [purchaseOrder];
// Anda bisa menggunakan _readonly_ di semua tempat,
sedikit lebih banyak sintaks tambahan di sana-sini, tapi sintaks
ini memberikan lebih banyak keamanan ekstra.
Anda dapat mengetahui lebih lanjut tentang readonly:
- https://www.typescriptlang.org/docs/handbook/interfaces.html#readonly-properties
- https://basarat.gitbooks.io/typescript/content/docs/types/readonly.html
Dan Anda bisa terus belajar tentang JavaScript dan
TypeScript didalam contoh tentang fungsi:
example:functions
Atau jika Anda ingin tahu lebih banyak tentang immutability:
example:immutability
readonlyOrders.pop();