问题:
您有使用 TypeScript 外部命名空间的代码模块,但您遇到错误或意外行为。这是您的代码:
// 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 { } }
糖果杯类比:
想象一下在纸上整理糖果。如果每张纸都是一个单独的模块,那么在每张纸上创建一个标有“A”的杯子并没有什么帮助——这就像创建额外的步骤而没有实际组织糖果一样。
无杯子:
不要使用命名空间,请考虑像这样编写代码:
// Mod1.ts export class Twix { ... } // Mod2.ts export class PeanutButterCup { ... } // Mod3.ts export class KitKat { ... }
这会创建一个更简单的结构,而无需需要不必要的命名空间。
命名空间不适合模块的原因:
外部模块指南:
危险信号:
以上是如何通过 TypeScript 外部模块有效使用命名空间?的详细内容。更多信息请关注PHP中文网其他相关文章!