F4 · TypeScript dan Web dari Nol
Bahasa web hari ini: dari cara kerja halaman web, JavaScript, dan TypeScript sampai aplikasi Next.js yang memanggil API bertipe.
- 16 modul
- 142 latihan
- 219 istilah
Daftar modul
- 01Cara kerja web9 latihan
- 02JavaScript dari kacamata Python10 latihan
- 03Fungsi, closure, dan `this`10 latihan
- 04Tipe di TypeScript10 latihan
- 05Objek, array, dan generic8 latihan
- 06Desain dengan tipe8 latihan
- 07Kelas, modul, dan galat8 latihan
- 08Node, npm, dan rantai pasok8 latihan
- 09Asinkron9 latihan
- 10DOM, event, dan formulir9 latihan
- 11Pengujian9 latihan
- 12Data di batas sistem9 latihan
- 13React dasar9 latihan
- 14Next.js App Router9 latihan
- 15API bertipe, keamanan, dan aksesibilitas9 latihan
- 16Proyek akhir: Dasbor Laporan Warung8 latihan
Ada contoh atau latihan bertanda “Kerjakan di laptop”? Paket dan data F4 untuk menjalankannya di komputermu ada di panduan menjalankan kode di komputermu.
Tentang course ini
Bahasa web hari ini: dari cara kerja halaman web, JavaScript, dan TypeScript sampai aplikasi Next.js yang memanggil API bertipe.
Course fondasi jalur Full Stack Developer, gratis penuh. Satu proyek dari awal sampai akhir: Dasbor Laporan Warung untuk Bu Sri, pemilik Warung Makmur (fiktif).
Posisi di jalur Full Stack Developer
| Urutan | Course | Peran |
|---|---|---|
| 1 | F1 · Python dari Nol | Bahasa pertama: variabel, fungsi, berkas, tes |
| 2 | F2 · SQL dan Data dari Nol | Data Warung Makmur yang dipakai ulang di sini |
| 3 | F3 · Alat Kerja Developer | Terminal, Git, paket, CI |
| 4 | F4 · TypeScript dan Web dari Nol | HTTP, TypeScript ketat, asinkron, DOM, pengujian, validasi, React, Next.js, keamanan dan aksesibilitas dasar |
| 5 | F5 · Rilis: dari Notebook ke Aplikasi | Container, CI/CD, tayang, rollback |
| 6 | K1 · Struktur Data dan Algoritma | Dianjurkan |
| 7 | C14 · Full Stack Development | Memakai F4 sebagai prasyarat wajib dan memakai kerangka latihan TypeScript-nya |
| 8 | C11 · Desain Sistem dan Arsitektur | Memakai HTTP, kepala, proksi, dan cookie dari F4 |
Untuk siapa
- Yang ingin membuat aplikasi web, dari halaman statis sampai aplikasi Next.js dengan API bertipe.
- Prasyarat: F1 dan F3 dianjurkan (atau sudah bisa satu bahasa pemrograman dan memakai terminal serta Git). F2 membantu karena data Warung Makmur sama.
- Yang kamu butuhkan: peramban, akun GitHub gratis, dan laptop dengan Node.js 22 atau GitHub Codespaces.
Kenapa course ini ada
- Satu bahasa untuk seluruh aplikasi web. Halaman, server, API, dan tes bisa ditulis dalam TypeScript yang sama.
- Bahasa yang paling banyak dipakai di GitHub. Menurut GitHub Octoverse 2025 (28 Oktober 2025), TypeScript melewati Python dan JavaScript pada Agustus 2025 sebagai bahasa dengan kontributor bulanan terbanyak. GitHub mengaitkannya dengan kerja bersama AI: tipe yang ketat menangkap kesalahan lebih awal.
- Satu bahasa, banyak tempat. Frontend, backend (Node), edge (misalnya Cloudflare Workers), aplikasi desktop, ekstensi, dan SDK agen AI.
Cara klasik di course ini: web dari dasarnya (HTTP, HTML, DOM, event loop), JavaScript tanpa kerangka kerja, menulis sendiri hal yang biasanya diberikan pustaka (pelari tes mini, router kecil, validasi), dan membaca spesifikasi (WHATWG, ECMAScript, RFC). Cara modern: TypeScript 7 (kompiler native), React 19, Next.js App Router, validasi skema (Zod), tipe yang dihasilkan dari OpenAPI, dan agen AI yang menulis kode, lalu diverifikasi dengan pemeriksa tipe, tes, dan pemahaman cara kerja web.
Cara belajar di course ini
- Mode langkah. Setiap modul tampil layar demi layar: kotak Intinya (3–5 butir) di awal, satu ide per layar dengan contoh lalu pertanyaan cek, animasi dengan jeda tebak, playground bermisi, dan latihan di akhir bagian yang dilatihnya. Tombol Baca penuh menampilkan semua layar dalam satu halaman. Bagian Pendalaman boleh dilewati.
- Contoh TypeScript diperiksa mesin. Setiap keluaran di modul berasal dari menjalankan kodenya dengan Node 22 dan TypeScript 7.0.2.
- Latihan TypeScript dikerjakan di laptop atau Codespaces dengan kerangka
di folder
_kerangka/course ini (lihat bagian berikut). Setiap latihan punya kode awal, tes yang boleh kamu baca, petunjuk bertingkat, dan solusi dengan penjelasan. - Lab Codespaces untuk Node, npm, Next.js, dan deploy (Modul 08, 14–16) ditulis dengan daftar "Selesai bila:" yang kamu periksa sendiri.
Waktu: ±3,5 jam per modul, total ±56 jam.
Menjalankan latihan di laptop atau Codespaces
Kerangka _kerangka/ berisi package.json dan package-lock.json (versi
dipatok: TypeScript 7.0.2, React 19.3.1, Zod 4.6.7, jsdom 29.1.1,
@types/node 22), tsconfig.json (strict, erasableSyntaxOnly, modul
ES, jsx: react-jsx), pembantu tes uji.ts dan uji-react.tsx, serta
pelari jalankan.mjs. Butuh Node.js 22.13 atau lebih baru.
cp -r _kerangka latihan-f4 && cd latihan-f4
npm ci # memasang versi persis dari package-lock.json
Untuk setiap latihan, buat berkas gabung.ts (atau gabung.tsx untuk
React) berisi, berurutan: baris impor pembantu tes, kode awal yang kamu
lengkapi, lalu blok tes latihan itu apa adanya.
import { uji, cek, cekSama, cekLempar, cekTolak, cekTipe, keluaran, tangkap, samaDalam, type Sama } from "./uji.ts";
// … kode awal latihan, yang kamu lengkapi …
// … blok tes latihan …
Lalu periksa tipe dan jalankan tesnya:
npx tsc -p . # galat tipe = latihan belum lulus
node jalankan.mjs latihan out/gabung.js hasil.json # tambah --dom untuk latihan DOM dan React
cat hasil.json # status "lulus", atau tes mana yang gagal dan pesannya
Latihan yang memakai data (laporan.json, laporan-rusak.json,
laporan-api.json) membaca berkasnya dari folder kerja: salin dulu dari
folder data/ course ini. Di Modul 11 kamu juga menjalankan tes
yang sama dengan Vitest.
Lab Next.js (Modul 14–16) memakai TypeScript 5.9.3, karena next build
memeriksa tipe lewat API TypeScript yang belum siap di TypeScript 7 (lihat
Modul 08).
Silabus (16 modul)
| # | Modul | Isi | Proyek Laporan Warung |
|---|---|---|---|
| 01 | Cara kerja web | HTTP (permintaan, respons, kepala, status), URL, HTML semantik, CSS dasar, DOM, DevTools | escapeHtml, tabelHtml: laporan statis yang aman dari injeksi |
| 02 | JavaScript dari kacamata Python | Nilai dan tipe, let/const, == vs ===, truthiness, angka (IEEE 754, BigInt), string, fitur ES2023/2024 | formatRupiah, subtotal, totalTransaksi |
| 03 | Fungsi, closure, dan this | Fungsi sebagai nilai, scope dan closure, hoisting, this dan bind, map/filter/reduce, kekekalan data | kelompokkan, omzetHarian |
| 04 | Tipe di TypeScript | Anotasi, inferensi, union dan literal, narrowing, unknown vs any, strict, penghapusan tipe | Tipe MetodeBayar, labelMetode yang tuntas (never) |
| 05 | Objek, array, dan generic | interface vs type, opsional dan readonly, generic, tipe utilitas, discriminated union | Tipe Laporan kanonik, ringkasProduk |
| 06 | Desain dengan tipe | Tipe bermerek, mapped/conditional/template literal type, as const, satisfies, tes tipe, alternatif enum | rupiah(), HasilMuat |
| 07 | Kelas, modul, dan galat | Kelas, pewarisan vs komposisi, modul ES, galat (cause, subkelas), pola Result | GalatLaporan, pemecahan ke format.ts/hitung.ts/jenis.ts |
| 08 | Node, npm, dan rantai pasok | Runtime Node, package.json, semver, lockfile, resolusi modul, type stripping, tsc, serangan rantai pasok dan pertahanannya | CLI laporan (kode keluar 0/1/2) |
| 09 | Asinkron | Event loop, Promise, async/await, fetch, AbortController, batas waktu, Promise.all/allSettled | muatLaporan dengan batas waktu dan pembatalan |
| 10 | DOM, event, dan formulir | Seleksi, event dan delegasi, formulir, validasi di klien dan server, aksesibilitas dasar | renderTabel, formulir kasbon |
| 11 | Pengujian | Tes unit, kasus tepi, test double, TDD, pelari tes mini, Vitest | Rangkaian tes untuk fungsi Modul 02–10 |
| 12 | Data di batas sistem | JSON dan batasnya, validasi saat jalan, parse, don't validate, Problem Details (RFC 9457), Zod 4 | SkemaLaporan, parseLaporan |
| 13 | React dasar | JSX, komponen, props, state, efek, daftar dan key, mengangkat state, formulir terkendali, rekonsiliasi | KartuRingkasan, FilterMetode, TabelProduk |
| 14 | Next.js App Router | Server dan Client Component, rute dari folder, pemuatan data, route handler, keluaran build, dokumentasi versi terpasang | /api/ringkasan, /api/transaksi, POST /api/kasbon, halaman /laporan |
| 15 | API bertipe, keamanan, dan aksesibilitas | OpenAPI dan tipe dari kontrak, XSS, CSP, CSRF, cookie, rahasia, WCAG 2.2, Core Web Vitals | Klien /api/* bertipe, CSP, penjaga CSRF |
| 16 | Proyek akhir: Dasbor Laporan Warung | Menyatukan semua lapisan, tanggal dan zona waktu, tes berlapis, deploy ke Cloudflare Workers (OpenNext), tinjauan desain tertulis | Dasbor utuh, tes, README, dan lima ADR |
Proyek: Laporan Warung
Warung Makmur (F2) ingin melihat laporan penjualannya dari ponsel. Kamu
membangun Dasbor Laporan Warung selangkah demi selangkah: dari halaman
HTML statis yang aman, fungsi hitung bertipe, CLI Node, validasi data, sampai
aplikasi Next.js yang memanggil API bertipe. Data: data/laporan.json (816
transaksi September 2026 dari dataset F2, dibuat deterministik oleh
data/buat_laporan.py), data/laporan-rusak.json (untuk latihan
validasi), dan kontrak API data/laporan-api.json (OpenAPI 3.1). Tipe
kanonik, nama fungsi, angka rujukan, dan langkah per modul ada di
kontrak proyek.
Hubungan dengan course lain
| Course | Hubungan |
|---|---|
| F1, F2 | formatRupiah sama dengan kontrak kasku di F1; data Warung Makmur dari F2 dipakai ulang |
| F3 | Terminal, Git, dan CI dipakai di Lab Codespaces |
| F5 | Pola rilis (CI, rahasia, tayang, rollback) untuk langkah deploy proyek akhir |
| K1 | Kompleksitas Array vs Map/Set, pengurutan stabil (toSorted), algoritme satu lintasan di rekonsiliasi React |
| C14 | Prasyarat wajib: HTTP, TypeScript, React, Next.js dasar, Zod, OpenAPI; C14 memakai kerangka latihan TypeScript F4 |
| C11 | HTTP, kepala, proksi, dan cookie dari Modul 01 dan 15 |