Latihan 1 dari materi Type Narrowing di TypeScript — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi fungsi panjang(input). Parameter input bertipe string | string[]: satu teks, atau array berisi teks.
Kalau input string (cek dengan typeof input === "string"), kembalikan input.length, yaitu banyaknya karakter.
Kalau input array, kembalikan input.length, yaitu banyaknya isi array.
Biarkan baris function panjang(input: string | string[]): number dari kode awal apa adanya: union-nya ikut diperiksa.
TypeScript memeriksa kodemu dulu (mode strict, seperti tsc --noEmit) dan gak menemukan error. Error-nya muncul di console dengan format tsc.
Dua baris uji ini ditaruh sesudah kodemu:
const n: number = panjang("abc") + panjang(["a", "b"]) harus diterima TypeScript: teks dan array teks sama-sama boleh masuk, dan hasilnya angka.
panjang(42) harus ditolak dengan error TS2345: angka gak termasuk string | string[].
Satu return input.length tanpa pengecekan memang memberi angka yang sama, tapi yang kamu latih di sini justru pengecekannya, jadi itu ikut dinilai.
Hint
Bedakan dulu jenis input-nya: satu teks atau array. Di tiap cabang, TypeScript tahu type pastinya, jadi kamu bisa memakai properti yang cocok.
Pakai if (typeof input === "string") { return ...; } lalu satu return lagi di bawahnya. Setelah cabang string ber-return, input di bawahnya pasti string[].