如何在tsc上执行单独的.ts文件?

时间:2012-10-04 13:07:18

标签: typescript tsc

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

A.ts

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

TestA.ts

/// <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
    也提出了同样的错误

我哪里出错了?

2 个答案:

答案 0 :(得分:4)

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

您想要做的是引用运行时中的其他文件。这是使用模块以及importexport关键字完成的。

试试这个:

<强> 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();