我想使用TypeScript在IIFE中定义一个类并不断收到错误class can be defined either in a module or a file
。下面的代码不起作用。
(function(){
// Error here
class Person {
}
})()
我需要这样做的原因是因为我不想暴露任何全局变量,甚至不是模块。你可能想知道为什么,因为我会以下面的方式将它们添加到角度模块
(function(){
angular.module('app').controller('HomeController', HomeController);
// error here
class HomeController {
}
})();
答案 0 :(得分:4)
创建课程时,它会为您生成IIFE:
班级:
class Example {
}
JavaScript中的结果:
var Example = (function () {
function Example() {
}
return Example;
})();
如果您希望将课程保留在全局范围之外,可以使用模块:
module Stack {
export class Example {
}
export class Overflow {
}
}
只有Stack
模块出现在全局范围内。
var Stack;
(function (Stack) {
var Example = (function () {
function Example() {
}
return Example;
})();
Stack.Example = Example;
var Overflow = (function () {
function Overflow() {
}
return Overflow;
})();
Stack.Overflow = Overflow;
})(Stack || (Stack = {}));
如果您想更进一步,可以使用外部模块 - 当您这样做时,您的所有类或模块都不会添加到全局范围。