What does the @ (at sign) mean in the latest TypeScript (presumably v1.5) example?

后端 未结 1 1977
梦毁少年i
梦毁少年i 2020-12-20 11:25

There is a very interesting picture was posted in the official TypeScript blog.

\"Wierd

I wond

相关标签:
1条回答
  • 2020-12-20 11:48

    The big news this week is the merging of AtScript and TypeScript.

    The following example from the AtScript documentation...

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

    Compiles into the following 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 was planned to be a layer on top of TypeScript (i.e. a super-set of a super-set) - but now the two projects are one.

    Annotations are described thus:

    • AtScript annotation syntax is just a shorthand of placing the same information in ES5. It would be reasonable for an ES5 developer to write these annotations manually. A helper library could even be provided.
    • Annotations can only be placed on functions.

    • An annotation placed on a class is an annotation placed on the class’ constructor function.

    • An annotation placed on a field gets moved to the constructor function.

    • All annotations are translated as properties on a function.

    0 讨论(0)
提交回复
热议问题