Latihan 1 dari materi Advanced Types di TypeScript — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Kode awal sudah punya dua kerangka: type Stringify<T> = { ... } dan function keys<T extends object>(obj: T): (keyof T)[] { ... }. Biarkan baris pembukanya, termasuk penanda type-nya, lalu isi keduanya.
Di dalam kurung kurawal Stringify, tulis mapped type yang mengubah semua property jadi string: [K in keyof T]: string. Hasilnya, Stringify<{ a: number; b: boolean }> jadi { a: string; b: string }.
Di dalam keys, kembalikan daftar key dari obj: return Object.keys(obj) as (keyof T)[].
Yang dicek:
Kodemu memuat type Stringify<, [K in keyof T]: string, dan as (keyof T)[] (atau as Array<keyof T>).
TypeScript memeriksa kodemu dulu (mode strict, seperti tsc --noEmit), error tipenya muncul di console, dan latihannya baru lolos kalau gak ada error. Tanpa as (keyof T)[], TypeScript menolak return Object.keys(obj) dengan TS2322, karena Object.keys mengembalikan string[].
Hint
Mapped type menyusuri tiap key type lama dan memberi type baru untuk tiap key. Daftar key sebuah object di JavaScript diambil dengan Object.keys.
Isi Stringify dengan satu baris berbentuk [K in keyof T]: tipe-baru. Isi keys dengan return Object.keys(obj), ditambah as (keyof T)[] supaya tipenya cocok.
type Stringify<T> = { [K in keyof T]: string }; lalu di dalam keys: return Object.keys(obj) as (keyof T)[];
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...