0Pricing
TypeScript Academy · Pelajaran

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 Empty

Mesin 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 Direction

Komponen 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

  1. Apa Itu DSL Tingkat Jenis
  2. Merancang DSL Kueri Fluent
  3. Validasi Input Saat Kompilasi
  4. Pesan Error dalam DSL Tingkat Jenis
← Kembali ke TypeScript Academy