Apa Itu DSL Tingkat Jenis
Gunakan jenis untuk membatasi API fluent pada program yang valid.
Apa Itu DSL Tingkat Jenis adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 4 pelajaran total.
Apa Itu DSL Tingkat Tipe?
DSL tingkat tipe (bahasa khusus domain) menggunakan tipe TypeScript untuk membatasi API sehingga hanya program yang valid yang dapat dikompilasi. Tipe-tipe tersebut bertindak sebagai tata bahasa: kombinasi yang tidak valid ditolak sebelum kode dijalankan.
DSL Tertanam
DSL tertanam berada di dalam bahasa induk (di sini, TypeScript), bukan sebagai pengurai terpisah. Anda menulis TS biasa, tetapi sistem tipe menegakkan aturan DSL.
Contoh yang Familiar
Anda sudah menggunakan DSL tingkat tipe: pembangun kueri yang hanya mengizinkan nama kolom yang valid, atau perute yang menyimpulkan parameter dari suatu jalur. Tipe-tipe tersebut menyandikan hal-hal yang diizinkan oleh API.
Membatasi API Berantai
Gagasan utamanya: setiap metode mengembalikan tipe yang membatasi metode mana yang dapat Anda panggil berikutnya. Memanggil sesuatu dalam urutan yang salah menyebabkan kompilasi gagal.
interface Empty { from(t: string): HasFrom; }
interface HasFrom { where(c: string): HasFrom; select(): string; }
declare const q: Empty;
q.from("users").select(); // ok
q.select(); // Error: select not on EmptyMesin Status dalam Tipe
Pola tersebut merupakan mesin status tingkat tipe: setiap antarmuka adalah sebuah status, dan setiap metode merupakan transisi ke status lain. Kompilator menelusuri mesin tersebut saat Anda merangkai pemanggilan.
Mengapa Tidak Hanya Memeriksa Saat Waktu Berjalan?
Pemeriksaan saat waktu berjalan gagal terlambat, dalam produksi, ketika pengguna sudah menggunakannya. DSL tingkat tipe gagal lebih awal, di editor, dengan garis bergelombang merah, sebelum kode dikirimkan. Aturannya sama, tetapi umpan baliknya jauh lebih murah.
Parameter Tipe Semu
DSL sering membawa informasi dalam parameter tipe semu: generik yang hanya ada saat kompilasi untuk melacak status yang terakumulasi (kolom yang dipilih, variabel yang diikat) tanpa biaya saat waktu berjalan.
interface Query<Selected extends string> {
select<C extends string>(c: C): Query<Selected | C>;
}Tipe Literal sebagai Token
Tipe literal string berperan sebagai token DSL. Jika digabungkan dengan literal templat dan union, tipe-tipe tersebut memungkinkan sistem tipe menalar isi teks DSL Anda.
type Direction = "asc" | "desc";
declare function orderBy(col: string, dir: Direction): void;
orderBy("age", "asc"); // ok
orderBy("age", "up"); // Error: not a DirectionKomponen Dasar
DSL tingkat tipe menggabungkan: generik untuk status, tipe kondisional untuk percabangan, literal templat untuk mengurai string, dan tipe terpetakan untuk mengubah bentuk. Pelajaran-pelajaran berikutnya menggunakan masing-masing komponen ini.
Kompromi
DSL tingkat tipe memberikan jaminan kuat, tetapi dapat menghasilkan galat yang sulit dipahami dan kompilasi yang lebih lambat jika digunakan secara berlebihan. DSL yang baik menyeimbangkan keamanan dengan pesan galat yang mudah dibaca (pelajaran berikutnya membahas hal ini).
Mengapa Ini Penting
Menyandikan aturan domain ke dalam tipe berarti kompilator menjadi ahli domain: kompilator menolak hal-hal yang tidak masuk akal secara otomatis. Inilah cara pembangun kueri, pustaka formulir, dan sistem efek memberikan jaminan yang begitu kuat.
Uji Cepat
Uji pemahaman Anda tentang DSL tingkat tipe.
Ringkasan
DSL tingkat tipe menggunakan tipe TypeScript sebagai tata bahasa sehingga hanya program yang valid yang dapat dikompilasi. API berantai memodelkan mesin status, di mana setiap metode mengembalikan tipe yang membatasi status, dengan generik semu, token tipe literal, serta tipe kondisional, literal templat, dan tipe terpetakan sebagai komponen dasar untuk memberikan umpan balik lebih awal di editor.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Apa Itu DSL Tingkat Jenis” gratis?
Ya — teks lengkap “Apa Itu DSL Tingkat Jenis” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Apa Itu DSL Tingkat Jenis”?
Gunakan jenis untuk membatasi API fluent pada program yang valid. Kamu berlatih TypeScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai TypeScript Academy?
Tidak diperlukan pengalaman sebelumnya. TypeScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Apa Itu DSL Tingkat Jenis” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran TypeScript Academy ini?
Ya. Setiap pelajaran TypeScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Apa Itu DSL Tingkat Jenis
- Merancang DSL Kueri Fluent
- Validasi Input Saat Kompilasi
- Pesan Error dalam DSL Tingkat Jenis