TypeScript Dasar
TypeScript Dasar
PENGENALAN TYPESCRIPT
tsc
TypeScript Code (TypeScript JavaScript Code
Compiler)
KEUNTUNGAN BELAJAR TYPESCRIPT
● Saat ini banyak sekali perusahaan yang mulai mengadopsi TypeScript, hal ini
karena banyak fitur yang dimiliki oleh TypeScript yang sangat memudahkan saat
proses pemrograman aplikasi
● Karena TypeScript melakukan kompilasi kode menjadi JavaScript, hal ini secara
otomatis kita tidak perlu lagi pusing dengan fitur-fitur di JavaScript yang belum di
support, karena TypeScript secara otomatis akan mengurusnya
● Selain itu, banyak juga framework-framework yang populer sekarang mulai beralih
menggunakan TypeScript, seperti ReactJS, VueJS, NestJS, dan lain-lain
SETUP PROJECT
MEMBUAT PROJECT
● https://jestjs.io/docs/getting-started#using-typescript
FUNCTION
SAY HELLO FUNCTION
● Sebelum mulai belajar, kita akan coba buat say hello function dengan file
TypeScript
KODE : SRC/SAY-HELLO.TS
KODE : TESTS/SAY-HELLO.TEST.TS
KODE : NPM TEST
TYPESCRIPT COMPILE
KOMPILASI TYPESCRIPT
● Seperti yang dijelaskan di awal, bahwa kode TypeScript tidak bisa langsung
dijalankan, kita harus melakukan kompilasi terlebih dahulu menjadi JavaScript
● Kita bisa menggunakan perintah : npx tsc
● Secara default, semua file hasil kompilasi akan disimpan di lokasi yang sama
dengan file TypeScript
● Kadang, praktek programmer TypeScript biasanya memisahkan lokasi hasil
kompilasi ke sebuah folder misal dist (distribution)
● Untuk mengubah lokasi file hasil kompilasi, kita perlu ubah di tsconfig.json
KODE : MENGUBAH LOKASI HASIL KOMPILASI
INCLUDE DAN EXCLUDE
● Secara default, semua file ts akan coba dikompilasi oleh TypeScript, kadang-
kadang kita tidak membutuhkan hal tersebut
● Misal kita hanya ingin melakukan kompilasi untuk kode program, dan tidak butuh
melakukan kompilasi untuk kode unit test
● Kita bisa tambahkan include dan exclude pada tsconfig.json nya
● https://www.typescriptlang.org/tsconfig#include
● https://www.typescriptlang.org/tsconfig#exclude
KODE : INCLUDE DAN EXCLUDE
TIPE DATA PRIMITIF
TIPE DATA PRIMITIF
● TypeScript menggunakan tipe data di JavaScript, sehingga semua tipe data seperti
string, number, boolean otomatis didukung oleh TypeScript
DAFTAR TIPE DATA PRIMITIF
Tipe Data Primitif Keterangan
● Karena TypeScript adalah Strongly Type Language, oleh karena itu saat kita
membuat variabel, kita harus menentukan tipe data variabel nya
● Dan jika kita sudah menentukan tipe datanya, kita tidak boleh mengubah variabel
tersebut menjadi tipe data yang berbeda
● TypeScript bisa secara otomatis mendeteksi tipe data yang sedang digunakan, tapi
kita juga bisa menentukan secara eksplisit menggunakan :
const namaVariable : tipedata = value
KODE : TIPE DATA PRIMITIF
BABEL TYPESCRIPT
BABEL TYPESCRIPT
● Untuk menjalankan TypeScript Compiler secara terus menerus, kita juga bisa
menggunakan perintah :
npx tsc --watch
TIPE DATA ARRAY
TIPE DATA ARRAY
● Tipe data array di TypeScript juga sama seperti di JavaScript, cara pembuatannya
dan penggunaannya
● Di TS tipe data Array bisa menggunakan tanda TipeData[] atau Array<TipeData>
KODE : TIPE DATA ARRAY
READ ONLY ARRAY
● Di TypeScript, kita bisa membuat Array dengan tipe readonly (tidak bisa diubah
lagi) dengan menggunakan tipe data ReadonlyArray<TipeData>
KODE : READ ONLY ARRAY
TUPLE
● Tuple adalah tipe data Array, yang panjang array dan juga tipe data di tiap index
sudah ditentukan
● Pada kasus tuple bersifat read only (tidak bisa diubah), kita bisa tambahkan kata
kunci readonly
KODE : TUPLE
TIPE DATA ANY
TIPE DATA ANY
● Saat kita menggunakan TypeScript, setiap jenis data idealnya ada deklarasi
datanya
● Contoh saat kita ingin menggunakan tipe data JavaScript Object, idealnya
harusnya ada ketentuan attribute yang dimilikinya, sedangkan di JavaScript hal itu
tidak diwajibkan
● Pada kasus kita memang ingin membuat tipe data yang bebas seperti di
JavaScript, kita bisa gunakan tipe data Any
● Tipe data Any tersebut menjadikan TypeScript tidak melakukan pengecekan
apapun terhadap akses terhadap data tersebut
KODE : TIPE DATA ANY
TIPE UNION
UNION TYPE
● Seperti yang sudah kita tahu, JavaScript sebenarnya bisa menyimpan berbagai
jenis tipe data di variabel yang sama
● Namun di TypeScript, hal itu dilarang karena praktek yang buruk
● Pada kasus jika kita ingin membuat variabel yang bisa berubah bentuk tipe data,
kita bisa memberi tahunya menggunakan union type
● Secara otomatis TypeScript akan membolehkan kita mengubah tipe data, namun
sesuai yang sudah ditentukan di union type nya
KODE : UNION TYPE
MENGGUNAKAN UNION TYPE
● Saat kita membuat Union Type, kita perlu berhati-hati ketika memanggil method
terhadap variabel tersebut
● Hal ini karena tipe datanya bisa berubah, oleh karena itu ada baiknya kita
melakukan pengecekan tipe data terlebih dahulu menggunakan typeof
KODE : MENGGUNAKAN UNION TYPE
TYPE ALIAS
TYPE ALIAS
● Pada kasus yang sederhana, kadang membuat alias terlalu bertele-tele, kita juga
bisa membuat tipe data JavaScript Object secara langsung dengan
mendeklarasikan detail type nya ketika membuat variabel nya
● Hal ini lebih sederhana dibandingkan membuat Type terlebih dahulu
KODE : OBJECT TYPE
PROPRERTIES OPTIONAL
OPTIONAL PROPERTIES
● Secara default, saat kita membuat attribute di Object atau Type, maka attribute
tersebut wajib diisi nilainya
● Namun, kadang-kadang tidak semua attribute itu wajib diisi nilainya
● Pada kasus attribute nya tidak wajib diisi, kita bisa tambahkan tanda ? untuk
menandakan bahwa itu adalah optional
KODE : OPTIONAL PROPERTIES
ENUM
ENUM
● TypeScript memiliki tipe data enum, yaitu tipe data yang nilainya sudah pasti
● Tipe data ini tidak dimiliki di JavaScript
● Secara default tipe data enum ini akan dikonversi menjadi string di JavasScript,
namun bisa juga dikonversi menjadi number
KODE : ENUM
KODE : MENGGUNAKAN ENUM
ENUM DI JAVASCRIPT
● Secara default, enum di TypeScript akan dikonversi menjadi tipe data number
● Kadang kita ingin ubah dari number menjadi String, kita bisa lakukan hal itu ketika
membuat enum nya
KODE : ENUM SEBAGAI STRING
NULL DAN UNDEFINED
NULL DAN UNDEFINED
● Saat kita menggunakan ? pada variabel atau parameter, secara otomatis kita bisa
mengirim data undefined
● Tapi kadang, kadang, ada kasus kita juga ingin mengirim data null, pada kasus ini
kita juga bisa menggunakan tipe data null
KODE : UNDEFINED
KODE : NULL
INTERFACE
INTERFACE
● Interface adalah cara lain melakukan deklarasi data selain menggunakan Type
● Lantas kalo begitu, apa bedanya Interface dan Type?
● Interface bisa dikembangkan dengan mudah dibanding dengan Type
● Oleh karena itu, kebanyakan untuk tipe data yang kompleks, kebanyakan
programmer TypeScript akan menggunakan Interface dibandingkan menggunakan
Type
KODE : INTERFACE
KODE : MENGGUNAKAN INTERFACE
READONLY PROPERTIES
● Properties dapat kita jadikan readonly, yang artinya tidak bisa diubah lagi
● Kita bisa menggunakan kata kunci readonly pada attribute tersebut
KODE : READONLY PROPERTIES
FUNCTION INTERFACE
FUNCTION INTERFACE
● Di TypeScript, kita juga bisa membuat deklarasi Function dalam bentuk Interface
● Dengan demikian ketika kita ingin membuat variabel yang berisi function, kita bisa
dengan mudah menggunakan interface tersebut
KODE : FUNCTION INTERFACE
INDEXABLE INTERFACE
INDEXABLE INTERFACE
● Interface juga bisa digunakan untuk membuat tipe data dengan jenis yang memiliki
index, seperti Array atau Object
KODE : ARRAY
KODE : OBJECT
EXTENDING INTERFACE
EXTENDING INTERFACE
● Kadang, kita sering berada pada situasi dimana kita tahu tipe data yang kita
gunakan, namun TypeScript tidak tahu tipe data tersebut
● Biasanya pada kasus kita menggunakan kode dari JavaScript sehingga membuat
return value nya berupa tipe data Any
● Pada kasus ini, kita bisa melakukan konversi ke tipe data yang kita mau
menggunakan kata kunci as
● Ini disebut dengan type assertions
KODE :
FUNCTION
FUNCTION
● Sama seperti di JavaScript, di TypeScript juga kita bisa gunakan Function sebagai
parameter
● Hal ini sudah sering kita lakukan, biasanya ketika memanggil function yang
membutuhkan callback function lainnya
● Pada TypeScript parameter yang berupa function, perlu kita beri tahu bahwa
parameter tersebut adalah function
● Kita bisa gunakan Function Interface, atau bisa langsung sebutkan pada parameter
nya, jumlah parameter dan return value function yang dibutuhkan
KODE : FUNCTION SEBAGAI PARAMETER
KODE : ANONYMOUS FUNCTION
KODE : ARROW FUNCTION
IF STATEMENT
IF STATEMENT
● Semua fitur yang pernah kita bahas di kelas JavaScript, bisa dilakukan di
TypeScript
● Seperti Operator Matematika, Perbandingan, Logika, String Template, Optional
Chaining, With Statement, Default Parameter, Function Generator, Getter Setter,
Destructuring, Modules, Standard Library dan lain-lain
● Yang membedakan adalah, pada fitur TypeScript, karena Strongly Type, kita harus
menentukan tipe data dari tiap variabel dan parameter
● Pada kasus jika kita ingin seperti di JavaScript, dimana variabel atau parameter
bisa menggunakan tipe data apapun, maka kita harus menggunakan tipe data Any
di TypeScript