Javascript 可以在不使用exports命令的情况下编写此类型脚本
学习打字脚本并提供简单的角度服务:Javascript 可以在不使用exports命令的情况下编写此类型脚本,javascript,angularjs,typescript,visual-studio-2015,typescript1.8,Javascript,Angularjs,Typescript,Visual Studio 2015,Typescript1.8,学习打字脚本并提供简单的角度服务: interface IBaConfigFactory { dateTimeNow: Date; } export class BaConfigFactory implements IBaConfigFactory { dateTimeNow: Date; constructor() { this.dateTimeNow = new Date(); } } angular .module("blo
interface IBaConfigFactory {
dateTimeNow: Date;
}
export class BaConfigFactory implements IBaConfigFactory {
dateTimeNow: Date;
constructor() {
this.dateTimeNow = new Date();
}
}
angular
.module("blogApp")
.service("BaConfigFactory", BaConfigFactory);
但布朗抱怨说:
baConfigService.ts:6未捕获引用错误:未定义导出(匿名函数)@baConfigService.ts:6 app.ts:48
据我所知,我需要像Webpack或CommonJS这样的东西来让浏览器理解导出。是否可以重写此命令,这样我就不会得到导出命令?一次只学习一件事。如果不使用模块系统加载文件,也不将代码放在模块/名称空间中,则不需要导出 例如,这应该可以很好地工作:
class MyClass {
private x: number;
constructor(x: number) {
this.x = x;
}
getX(): number {
return this.x;
}
doit(y: number): number {
return this.x * y;
}
}
function echo(value: any): any {
return value;
}
(样本号:ts)
编译成以下格式:
var MyModule;
(function (MyModule) {
var MyClass = (function () {
function MyClass(x) {
this.x = x;
}
MyClass.prototype.getX = function () {
return this.x;
};
MyClass.prototype.doit = function (y) {
return this.x * y;
};
return MyClass;
}());
MyModule.MyClass = MyClass;
function echo(value) {
return value;
}
MyModule.echo = echo;
})(MyModule || (MyModule = {}));
()
您会注意到编译的js中没有导出
然后你简单地:
<html>
<head>
<script src="example.js"></script>
<script>
var a1 = new MyModule.MyClass(10),
a2 = new MyModule.MyClass(43);
console.log(MyModule.echo("hey there!"));
console.log(a1.doit(a2.getX()));
</script>
</head>
<body></body>
</html>
var a1=新的MyModule.MyClass(10),
a2=新的MyModule.MyClass(43);
log(MyModule.echo(“你好!”);
log(a1.doit(a2.getX());
我不知道是否有不使用导出
的方法可以做到这一点。很容易将模块系统与VS2015结合起来。选项位于TypeScript Build>Module system下的项目属性中。我必须在项目中包含require.js。将我的tsconfig.json设置为目标es6,并将AMD用作模块构建系统。这就成功了
var MyModule;
(function (MyModule) {
var MyClass = (function () {
function MyClass(x) {
this.x = x;
}
MyClass.prototype.getX = function () {
return this.x;
};
MyClass.prototype.doit = function (y) {
return this.x * y;
};
return MyClass;
}());
MyModule.MyClass = MyClass;
function echo(value) {
return value;
}
MyModule.echo = echo;
})(MyModule || (MyModule = {}));
<html>
<head>
<script src="example.js"></script>
<script>
var a1 = new MyModule.MyClass(10),
a2 = new MyModule.MyClass(43);
console.log(MyModule.echo("hey there!"));
console.log(a1.doit(a2.getX()));
</script>
</head>
<body></body>
</html>