Masalah:
Anda mempunyai kod menggunakan ruang nama dengan TypeScript luaran modul, tetapi anda menghadapi ralat atau tingkah laku yang tidak dijangka. Ini kod anda:
// baseTypes.ts export namespace Living.Things { export class Animal { move() { /* ... */ } } export class Plant { photosynthesize() { /* ... */ } } } // dog.ts import b = require('./baseTypes'); export namespace Living.Things { // Error, can't find name 'Animal', ?? export class Dog extends Animal { woof() { } } } // tree.ts // Error, can't use the same name twice, ?? import b = require('./baseTypes'); import b = require('./dogs'); namespace Living.Things { // Why do I have to write b.Living.Things.Plant instead of b.Plant?? class Tree extends b.Living.Things.Plant { } }
Analogi Cawan Gula-gula:
Bayangkan menyusun gula-gula pada helaian kertas. Jika setiap helaian ialah modul yang berasingan, mencipta cawan berlabel "A" pada setiap helaian tidak berguna—ia seperti membuat langkah tambahan tanpa benar-benar mengatur gula-gula anda.
Melangkah Tanpa Cawan:
Daripada menggunakan ruang nama, pertimbangkan untuk menulis kod anda seperti ini:
// Mod1.ts export class Twix { ... } // Mod2.ts export class PeanutButterCup { ... } // Mod3.ts export class KitKat { ... }
Ini mewujudkan struktur yang lebih ringkas tanpa memerlukan ruang nama yang tidak diperlukan.
Sebab Ruang Nama Aren' t Ideal untuk Modul:
Panduan untuk Modul Luaran:
Bendera Merah:
Atas ialah kandungan terperinci Bagaimanakah Saya Menggunakan Ruang Nama Secara Berkesan dengan Modul Luar TypeScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!