Lewati ke konten utama
F4

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.

Bagian dari jalur:
Mulai Modul 01

Daftar modul

  1. 01Cara kerja web9 latihan
  2. 02JavaScript dari kacamata Python10 latihan
  3. 03Fungsi, closure, dan `this`10 latihan
  4. 04Tipe di TypeScript10 latihan
  5. 05Objek, array, dan generic8 latihan
  6. 06Desain dengan tipe8 latihan
  7. 07Kelas, modul, dan galat8 latihan
  8. 08Node, npm, dan rantai pasok8 latihan
  9. 09Asinkron9 latihan
  10. 10DOM, event, dan formulir9 latihan
  11. 11Pengujian9 latihan
  12. 12Data di batas sistem9 latihan
  13. 13React dasar9 latihan
  14. 14Next.js App Router9 latihan
  15. 15API bertipe, keamanan, dan aksesibilitas9 latihan
  16. 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

UrutanCoursePeran
1F1 · Python dari NolBahasa pertama: variabel, fungsi, berkas, tes
2F2 · SQL dan Data dari NolData Warung Makmur yang dipakai ulang di sini
3F3 · Alat Kerja DeveloperTerminal, Git, paket, CI
4F4 · TypeScript dan Web dari NolHTTP, TypeScript ketat, asinkron, DOM, pengujian, validasi, React, Next.js, keamanan dan aksesibilitas dasar
5F5 · Rilis: dari Notebook ke AplikasiContainer, CI/CD, tayang, rollback
6K1 · Struktur Data dan AlgoritmaDianjurkan
7C14 · Full Stack DevelopmentMemakai F4 sebagai prasyarat wajib dan memakai kerangka latihan TypeScript-nya
8C11 · Desain Sistem dan ArsitekturMemakai 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

  1. Satu bahasa untuk seluruh aplikasi web. Halaman, server, API, dan tes bisa ditulis dalam TypeScript yang sama.
  2. 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.
  3. 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)

#ModulIsiProyek Laporan Warung
01Cara kerja webHTTP (permintaan, respons, kepala, status), URL, HTML semantik, CSS dasar, DOM, DevToolsescapeHtml, tabelHtml: laporan statis yang aman dari injeksi
02JavaScript dari kacamata PythonNilai dan tipe, let/const, == vs ===, truthiness, angka (IEEE 754, BigInt), string, fitur ES2023/2024formatRupiah, subtotal, totalTransaksi
03Fungsi, closure, dan thisFungsi sebagai nilai, scope dan closure, hoisting, this dan bind, map/filter/reduce, kekekalan datakelompokkan, omzetHarian
04Tipe di TypeScriptAnotasi, inferensi, union dan literal, narrowing, unknown vs any, strict, penghapusan tipeTipe MetodeBayar, labelMetode yang tuntas (never)
05Objek, array, dan genericinterface vs type, opsional dan readonly, generic, tipe utilitas, discriminated unionTipe Laporan kanonik, ringkasProduk
06Desain dengan tipeTipe bermerek, mapped/conditional/template literal type, as const, satisfies, tes tipe, alternatif enumrupiah(), HasilMuat
07Kelas, modul, dan galatKelas, pewarisan vs komposisi, modul ES, galat (cause, subkelas), pola ResultGalatLaporan, pemecahan ke format.ts/hitung.ts/jenis.ts
08Node, npm, dan rantai pasokRuntime Node, package.json, semver, lockfile, resolusi modul, type stripping, tsc, serangan rantai pasok dan pertahanannyaCLI laporan (kode keluar 0/1/2)
09AsinkronEvent loop, Promise, async/await, fetch, AbortController, batas waktu, Promise.all/allSettledmuatLaporan dengan batas waktu dan pembatalan
10DOM, event, dan formulirSeleksi, event dan delegasi, formulir, validasi di klien dan server, aksesibilitas dasarrenderTabel, formulir kasbon
11PengujianTes unit, kasus tepi, test double, TDD, pelari tes mini, VitestRangkaian tes untuk fungsi Modul 02–10
12Data di batas sistemJSON dan batasnya, validasi saat jalan, parse, don't validate, Problem Details (RFC 9457), Zod 4SkemaLaporan, parseLaporan
13React dasarJSX, komponen, props, state, efek, daftar dan key, mengangkat state, formulir terkendali, rekonsiliasiKartuRingkasan, FilterMetode, TabelProduk
14Next.js App RouterServer dan Client Component, rute dari folder, pemuatan data, route handler, keluaran build, dokumentasi versi terpasang/api/ringkasan, /api/transaksi, POST /api/kasbon, halaman /laporan
15API bertipe, keamanan, dan aksesibilitasOpenAPI dan tipe dari kontrak, XSS, CSP, CSRF, cookie, rahasia, WCAG 2.2, Core Web VitalsKlien /api/* bertipe, CSP, penjaga CSRF
16Proyek akhir: Dasbor Laporan WarungMenyatukan semua lapisan, tanggal dan zona waktu, tes berlapis, deploy ke Cloudflare Workers (OpenNext), tinjauan desain tertulisDasbor 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

CourseHubungan
F1, F2formatRupiah sama dengan kontrak kasku di F1; data Warung Makmur dari F2 dipakai ulang
F3Terminal, Git, dan CI dipakai di Lab Codespaces
F5Pola rilis (CI, rahasia, tayang, rollback) untuk langkah deploy proyek akhir
K1Kompleksitas Array vs Map/Set, pengurutan stabil (toSorted), algoritme satu lintasan di rekonsiliasi React
C14Prasyarat wajib: HTTP, TypeScript, React, Next.js dasar, Zod, OpenAPI; C14 memakai kerangka latihan TypeScript F4
C11HTTP, kepala, proksi, dan cookie dari Modul 01 dan 15