Я создал простой файл машинописных файлов - 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 должно быть слиты ...
EDIT
примечание стороны файл по четкости (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
Хорошо, добавьте вопрос. Кроме того, @basarat благодарит вас за вашу работу над машинописными текстами – Kai