2015-03-06 11 views
14

Istnieje bardzo interesujące zdjęcie opublikowane w oficjalnym TypeScript blog.Co oznacza znak @ (na znak) w najnowszym przykładzie TypeScript (przypuszczalnie v1.5)?

Wierd syntax

Zastanawiam się, co @ (at) znak symbol robi tam od (o ile wiem) nie mogą być wykorzystane w identyfikatorach JavaScript.

+2

Przeczytałbym o atscript. nazywa się to adnotacją. –

+5

W TypeScript, operator "@" oznacza dekorator (w powyższym przykładzie dekorator klasy). Możesz dowiedzieć się więcej o dekoratorach w [dokumentach TypeScript] (https://www.typescriptlang.org/docs/handbook/decorators.html). – sherb

Odpowiedz

11

Najważniejszą wiadomością w tym tygodniu jest połączenie AtScript i TypeScript.

Poniższy przykład z dokumentacji AtScript ...

@Component() 
class MyApp { 
    server:Server; 
    @Bind('name') name:string; 
    @Event('foo') fooFn:Function; 
    @Inject() 
    constructor(@parent server:Server) {} 
    greet():string {} 
} 

Kompiluje na następujące JavaScript ...

function MyApp() {} 
MyApp.properties = { 
    'server': { is: Server }, 
    'name': { is:string, 
      annotate: [new Bind('name']}, 
    'fooFn': { is:Function, 
      annotate:[new Event('foo')]} 
} 
MyApp.annotate = [ 
    new Component(), 
    new Inject() 
]; 
MyApp.parameters = [ 
    {is:Server, annotate:[parent]} 
]; 
MyApp.prototype.greet = function() {} 
MyApp.prototype.greet.returns = string; 

AtScript planowano być warstwa na górze maszynopisu (czyli super-zestaw super-set) - ale teraz jest to two projects are one.

Annotations are described thus:

  • składnia adnotacja AtScript jest tylko skrótem wprowadzania tych samych informacji w ES5. Rozsądne byłoby pisanie tych adnotacji ręcznie przez programistę ES5. Można nawet zapewnić bibliotekę pomocniczą.
  • Adnotacje można umieszczać tylko na funkcjach.

  • Adnotacja umieszczona na klasie jest adnotacją umieszczoną w funkcji konstruktora klasy.

  • Adnotacja umieszczona na polu zostaje przeniesiona do funkcji konstruktora.

  • Wszystkie adnotacje są tłumaczone jako właściwości funkcji.

Powiązane problemy