1

我制作了两个 TypeScript 文件A.tsTestA.ts.

A.ts

class A {
    constructor( private name : string ){}
    disp(){ console.log( this.name ); }
}

测试A.ts

/// <reference path="A.ts"/>
var a1 = new A( "Jun" );
a1.disp();
  • tsc TestA.ts
    好的。它制作 A.js 和 TestA.js。

  • tsc TestA.ts -e
    吴。“参考错误:A未定义”

  • tsc A.ts TestA.ts -e
    也会引发同样的错误

我哪里错了?

4

2 回答 2

4

/// <reference path="A.ts"/>仅在编译时用于引用另一个文件中的类型。当你使用这个结构时,TypeScript 假定这些类型在运行时已经以某种方式可用。也就是说,您有责任自己加载它们。

您想要做的是在运行时引用其他文件。这是使用模块和importandexport关键字完成的。

尝试这个:

A.ts

export class A {   
  constructor(private name : string ) {}
  disp() {
    console.log(this.name);
  }
}

测试A.ts

import a = module('./a');
var a1 = new a.A( "Jun" );
a1.disp();

然后你就可以用它tsc TestA.ts -e来编译和执行代码了。

于 2012-10-04T14:52:46.503 回答
1

您的代码中有一个错误(缺少“)”)。这个编译:

class A {   
  constructor(private name : string ) {}
  disp() {
    console.log(this.name);
  }
}

编辑 :

关于您的初始问题,您需要导出第一个模块,然后将其导入第二个文件。

您需要使用外部模块加载器(如 RequireJS)才能执行它,因为编译器将实现 require 函数调用(如 CommonJS 模块)。

请参阅:模块加载如何使用 TypeScript

A.ts

export class A {
  constructor(private name : string ){}
  disp() {
    console.log(this.name);
  }
}

测试A.js

var A = require("./A")
var a1 = new A.A("Jun");
a1.disp();
于 2012-10-04T14:06:10.070 回答