TypeScript Academy · Pelajaran

Apakah DSL pada Aras Jenis

Gunakan jenis untuk mengehadkan API lancar kepada atur cara yang sah.

Pelajaran 1 daripada 413 langkah

Apakah DSL pada Aras Jenis ialah pelajaran TypeScript Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran TypeScript Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.

Apakah DSL pada Peringkat Jenis?

DSL pada peringkat jenis (bahasa khusus domain) menggunakan jenis TypeScript untuk mengehadkan API supaya hanya atur cara yang sah boleh dikompil. Jenis tersebut bertindak sebagai tatabahasa: gabungan yang tidak sah ditolak sebelum kod dijalankan.

DSL Terbenam

DSL terbenam berada di dalam bahasa hos (dalam hal ini, TypeScript), bukannya menggunakan penghurai yang berasingan. Anda menulis TS biasa, tetapi sistem jenis menguatkuasakan peraturan DSL.

Contoh yang Biasa

Anda sudah menggunakan DSL pada peringkat jenis: pembina pertanyaan yang hanya membenarkan nama lajur yang sah, atau penghala yang membuat inferens parameter daripada laluan. Jenis mengekod perkara yang dibenarkan oleh API.

Mengehadkan API Lancar

Idea terasnya: setiap kaedah mengembalikan jenis yang mengehadkan kaedah yang boleh anda panggil seterusnya. Memanggil sesuatu dalam susunan 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 Keadaan dalam Jenis

Corak itu ialah mesin keadaan pada peringkat jenis: setiap antara muka ialah satu keadaan, dan setiap kaedah ialah peralihan kepada keadaan lain. Pengkompil menelusuri mesin tersebut apabila anda merantaikan panggilan.

Mengapa Bukan Semakan Masa Jalan Sahaja?

Semakan masa jalan gagal lewat, dalam pengeluaran, ketika pengguna sedang menggunakannya. DSL pada peringkat jenis gagal lebih awal, dalam penyunting, dengan garis berombak merah, sebelum kod dihantar. Peraturan sama, tetapi maklum balas jauh lebih murah.

Parameter Jenis Bayangan

DSL sering membawa maklumat dalam parameter jenis bayangan: generik yang wujud hanya semasa kompilasi untuk menjejaki keadaan terkumpul (lajur yang dipilih, pemboleh ubah yang diikat) tanpa kos masa jalan.

interface Query<Selected extends string> {
  select<C extends string>(c: C): Query<Selected | C>;
}

Jenis Literal sebagai Token

Jenis literal rentetan bertindak sebagai token DSL. Apabila digabungkan dengan literal templat dan kesatuan, jenis tersebut membolehkan sistem jenis membuat penaakulan tentang kandungan 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

Binaan Asas

DSL pada peringkat jenis menggabungkan: generik untuk keadaan, jenis bersyarat untuk percabangan, literal templat untuk menghurai rentetan, dan jenis dipetakan untuk mengubah bentuk. Pelajaran seterusnya menggunakan setiap binaan ini.

Tolak Ansur

DSL pada peringkat jenis memberikan jaminan kukuh tetapi boleh menghasilkan ralat yang sukar difahami dan kompilasi yang lebih perlahan jika digunakan secara berlebihan. DSL yang baik mengimbangi keselamatan dengan mesej ralat yang mudah dibaca (pelajaran kemudian akan membincangkan perkara ini).

Mengapa Ini Penting

Mengekodkan peraturan domain dalam jenis bermakna pengkompil menjadi pakar domain: ia menolak perkara yang tidak munasabah secara automatik. Begitulah cara pembina pertanyaan, pustaka borang dan sistem kesan menawarkan jaminan yang begitu kukuh.

Semakan Pantas

Uji pemahaman anda tentang DSL pada peringkat jenis.

Imbas Kembali

DSL pada peringkat jenis menggunakan jenis TypeScript sebagai tatabahasa supaya hanya atur cara yang sah boleh dikompil. API lancar memodelkan mesin keadaan, dengan setiap kaedah mengembalikan jenis yang mengehadkan keadaan, serta menggunakan generik bayangan, token jenis literal, jenis bersyarat, literal templat dan jenis dipetakan sebagai binaan asas untuk memberikan maklum balas awal dalam penyunting.

Percuma untuk bermula

Pelajari TypeScript dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
101
Pelajaran
352

Soalan Lazim

Adakah pelajaran “Apakah DSL pada Aras Jenis” percuma?

Ya — teks penuh “Apakah DSL pada Aras Jenis” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus TypeScript Academy, tingkat taraf kepada CoddyKit PRO. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Apakah DSL pada Aras Jenis”?

Gunakan jenis untuk mengehadkan API lancar kepada atur cara yang sah. Anda berlatih TypeScript Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan TypeScript Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran TypeScript Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Apakah DSL pada Aras Jenis” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran TypeScript Academy ini?

Ya. Setiap pelajaran TypeScript Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Apakah DSL pada Aras Jenis
  2. Mereka Bentuk DSL Pertanyaan Lancar
  3. Pengesahan Input Masa Kompilasi
  4. Mesej Ralat dalam DSL pada Aras Jenis
← Kembali ke TypeScript Academy