TypeScript Academy · Pelajaran

Suntikan Pembina

Suntik kebergantungan melalui pembina dengan kemas.

Pelajaran 2 daripada 413 langkah

Suntikan Pembina ialah pelajaran TypeScript Academy percuma di CoddyKit. Ini ialah pelajaran 2 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.

Suntikan Pembina Secara Mendalam

Suntikan pembina mengisytiharkan setiap kebergantungan sebagai parameter pembina. Objek disambungkan sepenuhnya sebaik sahaja wujud, menjadikan rakan kerjasama wajib mustahil untuk terlupa.

Sifat Parameter

TypeScript boleh mengisytiharkan dan menetapkan kebergantungan dalam satu langkah dengan menggunakan pengubah suai akses pada parameter. private readonly mencipta dan menetapkan medan itu secara automatik.

interface Mailer { send(to: string, body: string): void; }
class Notifier {
  constructor(private readonly mailer: Mailer) {}
}

Kebergantungan Berasaskan Antara Muka

Bergantung pada antara muka dan bukannya kelas memisahkan pengguna daripada sebarang pelaksanaan tertentu. Sebarang objek yang sepadan dengan antara muka itu boleh dibekalkan.

interface Mailer { send(to: string, body: string): void; }
class SmtpMailer implements Mailer {
  send(to: string, body: string) { console.log("SMTP ->", to); }
}

Penyambungan di Akar Komposisi

place yang mencipta graf objek ialah akar komposisi. Di situlah Anda memilih pelaksanaan konkrit dan menyuntikkannya.

class Notifier {
  constructor(private readonly mailer: Mailer) {}
  notify(to: string) { this.mailer.send(to, "hello"); }
}
const app = new Notifier(new SmtpMailer());
app.notify("a@b.com");

Menukar Pelaksanaan

Oleh sebab kebergantungan itu ialah antara muka, Anda boleh membekalkan pelaksanaan yang sama sekali berbeza tanpa menyentuh Notifier. Inilah fleksibiliti teras yang disediakan oleh DI.

class FakeMailer implements Mailer {
  sent: string[] = [];
  send(to: string) { this.sent.push(to); }
}
const fake = new FakeMailer();
new Notifier(fake).notify("x@y.com");
console.log(fake.sent); // ["x@y.com"]

Menguji Tanpa I/O Sebenar

Menyuntikkan fake untuk penghantaran mel membolehkan ujian mengesahkan perkara yang sepatutnya dihantar tanpa menggunakan e-mel sebenar. Ujian itu pantas, berketentuan dan terasing.

const fake = new FakeMailer();
new Notifier(fake).notify("test@site");
console.log(fake.sent.length === 1); // true

Berbilang Kebergantungan

Senaraikan seberapa banyak kebergantungan yang diperlukan. Setiap satunya jelas, ditaip dan wajib, supaya keperluan kelas dapat dilihat sepintas lalu.

interface Logger { log(m: string): void; }
class Notifier {
  constructor(
    private readonly mailer: Mailer,
    private readonly logger: Logger,
  ) {}
}

readonly Menghalang Penetapan Semula

Menandakan medan yang disuntik sebagai readonly menghalangnya daripada ditukar sepanjang hayatnya, lalu memastikan rakan kerjasama objek kekal stabil dan boleh dijangka.

class Notifier {
  constructor(private readonly mailer: Mailer) {}
  // this.mailer = ... would be a compile error
}

Tiada Penciptaan Tersembunyi di Dalam

Kelas yang menggunakan suntikan pembina tidak sepatutnya mencipta rakan kerjasamanya secara dalaman dengan new. Semua kebergantungan datang melalui pembina, supaya gandingan kekal jelas.

Wajib berbanding Pilihan

Kebergantungan wajib hendaklah diletakkan dalam pembina. Kebergantungan yang benar-benar pilihan boleh menggunakan pelaksanaan tanpa operasi sebagai nilai lalai, tetapi masih diberikan dari luar dan bukannya dibina di dalam.

const noopLogger: Logger = { log() {} };
new Notifier(new SmtpMailer(), noopLogger);

Ringkasan Manfaat

Suntikan pembina menjadikan kebergantungan jelas, objek dimulakan sepenuhnya, pelaksanaan boleh ditukar dan ujian menjadi mudah. Atas sebab yang baik, inilah gaya DI lalai.

Semakan Pantas

Semakan pantas tentang pelajaran ini.

Rumusan

Suntikan pembina mengisytiharkan kebergantungan sebagai parameter, yang selalunya ditaip melalui private readonly dan antara muka. Akar komposisi memilih pelaksanaan; ujian memberikan fake. Objek sentiasa disambungkan sepenuhnya, dan rakan kerjasama boleh ditukar tanpa menyunting kelas.

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 “Suntikan Pembina” percuma?

Ya — teks penuh “Suntikan Pembina” 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 “Suntikan Pembina”?

Suntik kebergantungan melalui pembina dengan kemas. 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 2 daripada 4.

Berapa lamakah pelajaran “Suntikan Pembina” 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. Asas Penyongsangan Kawalan
  2. Suntikan Pembina
  3. Bekas DI dengan InversifyJS
  4. Token Perkhidmatan Selamat dari Segi Jenis
← Kembali ke TypeScript Academy