Как выполнить обособленные .ts файлы на ЦТП?

голоса
1

Я сделал два машинопись файлов A.tsи TestA.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
    также вызывает ту же ошибку

Где я ошибся?

Задан 04/10/2012 в 14:07
источник пользователем
На других языках...                            


2 ответов

голоса
4

/// <reference path="A.ts"/>используется только во время компиляции ссылаться на типы в другом файле. При использовании этой конструкции, машинопись предполагает, что эти типы будут каким-то образом уже доступны во время выполнения. То есть, вы несете ответственность за загрузку их самостоятельно.

Что вы хотели сделать , это ссылки на другие файлы на время выполнения . Это делается с помощью модулей и 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для компиляции и выполнения кода.

Ответил 04/10/2012 в 15:52
источник пользователем

голоса
1

У вас есть боковая ошибка в коде (Промах «)»). Это один компилирует:

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

РЕДАКТИРОВАТЬ :

Что касается вашего первоначального Prob, вам нужно экспортировать первый модуль затем импортировать его в своем втором файле.

Вам нужно будет использовать внешний модуль загрузчик (например RequireJS) для того, чтобы быть в состоянии выполнить его как компилятор будет осуществлять вызов функции требует (как модуль CommonJS).

см: Как работает загрузочный модуль Работа с машинопись

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();
Ответил 04/10/2012 в 15:06
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more