我制作了两个TypeScript文件A.ts
和TestA.ts
。
class A {
constructor( private name : string ){}
disp(){ console.log( this.name ); }
}
/// <reference path="A.ts"/>
var a1 = new A( "Jun" );
a1.disp();
tsc TestA.ts
好。它使A.js和TestA.js。
tsc TestA.ts -e
NG。 “RefenceError:A
未定义”
tsc A.ts TestA.ts -e
也提出了同样的错误
我哪里出错了?
答案 0 :(得分:4)
/// <reference path="A.ts"/>
仅在编译时用于引用另一个文件中的类型。当您使用此构造时,TypeScript会假定这些类型在运行时已经以某种方式可用。也就是说,您有责任自己加载它们。
您想要做的是引用运行时中的其他文件。这是使用模块以及import
和export
关键字完成的。
试试这个:
<强> A.ts 强>
export class A {
constructor(private name : string ) {}
disp() {
console.log(this.name);
}
}
<强> TestA.ts 强>
import a = module('./a');
var a1 = new a.A( "Jun" );
a1.disp();
然后您可以使用tsc TestA.ts -e
来编译和执行代码。
答案 1 :(得分:1)
您的代码中有一个附带错误(缺少“)”)。这个编译:
class A {
constructor(private name : string ) {}
disp() {
console.log(this.name);
}
}
编辑:
关于您的初始概率,您需要导出第一个模块,然后将其导入第二个文件。
您需要使用外部模块加载器(如RequireJS)才能执行它,因为编译器将实现require函数调用(如CommonJS模块)。
请参阅:How Does Module Loading Work with TypeScript
A.ts
export class A {
constructor(private name : string ){}
disp() {
console.log(this.name);
}
}
TestA.js
var A = require("./A")
var a1 = new A.A("Jun");
a1.disp();