Jak wykonać rozdzielonych plików .TS na TSC?

głosy
1

Zrobiłem dwa maszynopis pliki A.tsi 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
    OK. To sprawia, że ​​A.js i TestA.js.

  • tsc TestA.ts -e
    NG. „RefenceError: Anie jest zdefiniowana”

  • tsc A.ts TestA.ts -e
    również podnosi ten sam błąd

Gdzie mam pójść źle?

Utwórz 04/10/2012 o 14:07
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
4

/// <reference path="A.ts"/>jest używany tylko w czasie kompilacji odwołać typów w innym pliku. Podczas korzystania z tego konstruktu, maszynopis zakłada, że ​​te typy będą jakoś już być dostępne w czasie wykonywania. Oznacza to, że jesteś odpowiedzialny za ładowanie je samodzielnie.

Czego chce zrobić to odwołać się do innych plików w czasie wykonywania . Odbywa się to za pomocą modułów i importi exportsłowa kluczowe.

Spróbuj tego:

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

Następnie można użyć tsc TestA.ts -e, aby skompilować i uruchomić kod.

Odpowiedział 04/10/2012 o 15:52
źródło użytkownik

głosy
1

Masz błąd w kodzie boczny (brakuje „)”). Ten kompiluje:

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

EDYTOWAĆ :

Dotyczące początkowej prob, trzeba wyeksportować pierwszy moduł następnie zaimportować je w drugim pliku.

Trzeba będzie użyć zewnętrznego modułu ładującego (jak RequireJS), aby być w stanie wykonać go jako kompilator będzie wdrożenie wymaga wywołania funkcji (jak moduł CommonJS).

zobacz: Jak działa ładowaniem modułów Praca z maszynopis

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();
Odpowiedział 04/10/2012 o 15:06
źródło użytkownik

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