我創建了簡單的打字稿文件 - playground link。模塊合併 - 它是如何工作的?
module Animals {
export class Zebra { }
}
module Animals {
export interface Legged { numberOfLegs: number; }
export class Dog { }
}
從我的觀點是等同於:
module Animals {
export class Zebra { }
export interface Legged { numberOfLegs: number; }
export class Dog { }
}
,應該產生:
var Animals;
(function (Animals) {
var Zebra = (function() {
function Zebra() {
}
return Zebra;
})();
Animals.Zebra = Zebra;
var Dog = (function() {
function Dog() {
}
return Dog;
})();
Animals.Dog = Dog;
})(Animals || (Animals = {}));
但在操場上,你可以看到,它產生兩個Animals
變量,即處理它作爲獨立的命名空間。
它是正確的嗎?據handbook應該合併...
編輯
旁註根據定義文件(d.ts) - 當我運行TSC與生成--declaration開關下面的定義。模塊動物包括兩次。這是對的嗎?
declare module Animals {
class Zebra {
}
}
declare module Animals {
interface Legged {
numberOfLegs: number;
}
class Dog {
}
}
看來我誤解了模塊合併的工作原理。但對我來說,這仍然很奇怪。如果我在一個模塊中有100多個文件,那麼變量會重複100次? – Kai
另外,當我嘗試從我的所有文件生成定義時,單個d。ts文件包含多個具有相同名稱的模塊,並且VSCode聲明這是一個錯誤 – Kai
好吧,關閉question.Besides,@basarat謝謝你在打字稿上的工作 – Kai