2015-03-06 11 views
14

Resmi TypeScript blog'da çok ilginç bir resim yayınlandı.@ (at), en son TypeScript (muhtemelen v1.5) örneğinde ne anlama geliyor?

Wierd syntax

Ben JavaScript tanımlayıcılar kullanılamaz ne (bildiğim kadarıyla) sembolü (oturum at) @ beri orada yapıyor merak ediyorum.

+2

i atscript da okumaya. bir ek açıklama olarak adlandırılır. –

+5

daktilo, "@" operatör (yukarıdaki örnekte, bir sınıf dekoratör) bir dekoratör belirtmektedir. Bunu [typescript docs] içinde dekoratörler hakkında daha fazla bilgi edinebilirsiniz (https://www.typescriptlang.org/docs/handbook/decorators.html). – sherb

cevap

11

büyük haber bu hafta AtScript ve typescript birleşmesi olduğunu.

AtScript belgelerinden Aşağıdaki örnek ... Aşağıdaki JavaScript içine

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

derler ...

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 (typescript üstüne bir katman olarak planlandı

yani süper setin süper seti) - ama şimdi two projects are one.

Annotations are described thus:

  • AtScript açıklama sözdizimi ES5 aynı bilgiyi yerleştirerek sadece bir kısaltmadır. Bir ES5 geliştiricisinin bu ek açıklamaları elle yazması mantıklı olacaktır. Bir yardımcı kütüphane bile sağlanabilir.
  • Ek açıklamalar yalnızca fonksiyonları üzerine yerleştirilebilir.

  • bir sınıf yerleştirilen bir açıklama sınıfının yapıcı işlevi yerleştirilmiş bir açıklama olduğunu.

  • bir alana yerleştirilen bir bilgi notu

    yapıcı işlevi başına taşınır.

  • tüm açıklamalar bir fonksiyon üzerindeki özellikler olarak çevrilir.