我如何访问 traceur atscript 中的字段注释
How can i access field annotations in traceur atscript
// Options: --annotations --array-comprehension --async-functions --debug --debug-names --exponentiation --free-variable-checker --generator-comprehension --low-resolution-source-map --input-source-map --member-variables --module-name --referrer --require --script --symbols --types --validate
//annotation class
class Template{
value:string;
constructor(value:string){
this.value = value;
}
}
//annotation class
class Attribute{}
@Template('<div>xxx</div>')
class SomeEl{
@Attribute counter:int=0;
constructor(){}
}
(function main(){
console.log(SomeEl.annotations);
console.log(SomeEl.properties); //prints undefined
})();
如何访问 atscript 中的字段注释?
我只能访问 class 注释,但不能访问 class 中的字段注释,非常感谢您的帮助
以上内容被转码为
$traceurRuntime.options.symbols = true;
var Template = function Template(value) {
"use strict";
this.value = value;
};
($traceurRuntime.createClass)(Template, {}, {});
Object.defineProperty(Template, "parameters", {get: function() {
return [[$traceurRuntime.type.string]];
}});
var Attribute = function Attribute() {
"use strict";
};
($traceurRuntime.createClass)(Attribute, {}, {});
var SomeEl = function SomeEl() {
"use strict";
this.counter = 0;
};
($traceurRuntime.createClass)(SomeEl, {}, {});
Object.defineProperty(SomeEl, "annotations", {get: function() {
return [new Template('<div>xxx</div>')];
}});
(function main() {
console.log(SomeEl.annotations);
console.log(SomeEl.properties);
})();
而且我看不到 @Attribute
注释 counter
这里有几处错误,构造函数上的注释与 class 上的注释相同。
@Template('<div>xxx</div>')
class SomeEl{
@Attribute
constructor(){}
}
以上转化为:
Object.defineProperty(SomeEl, "annotations", {get: function() {
return [new Template('<div>xxx</div>'), new Attribute];
}});
请注意,构造函数上的注释与 class 上的注释相同。任何其他函数上的注释都会将注释放在该函数上,但构造函数和 class 本质上是相同的。
new Attribute
从未出现在注释中的原因可能是您的 counter: int
和分号 (;
)。您混淆了 AtScript 的另一个概念,即参数注释。这些是这样写的:
@Template('<div>xxx</div>')
class SomeEl{
constructor(counter: int){}
}
这转化为以下内容,我相信这就是您想要的:
var SomeEl = function SomeEl(counter) {};
($traceurRuntime.createClass)(SomeEl, {}, {});
Object.defineProperty(SomeEl, "annotations", {get: function() {
return [new Template('<div>xxx</div>')];
}});
Object.defineProperty(SomeEl, "parameters", {get: function() {
return [[int]];
}});
return {};
// Options: --annotations --array-comprehension --async-functions --debug --debug-names --exponentiation --free-variable-checker --generator-comprehension --low-resolution-source-map --input-source-map --member-variables --module-name --referrer --require --script --symbols --types --validate
//annotation class
class Template{
value:string;
constructor(value:string){
this.value = value;
}
}
//annotation class
class Attribute{}
@Template('<div>xxx</div>')
class SomeEl{
@Attribute counter:int=0;
constructor(){}
}
(function main(){
console.log(SomeEl.annotations);
console.log(SomeEl.properties); //prints undefined
})();
如何访问 atscript 中的字段注释? 我只能访问 class 注释,但不能访问 class 中的字段注释,非常感谢您的帮助
以上内容被转码为
$traceurRuntime.options.symbols = true;
var Template = function Template(value) {
"use strict";
this.value = value;
};
($traceurRuntime.createClass)(Template, {}, {});
Object.defineProperty(Template, "parameters", {get: function() {
return [[$traceurRuntime.type.string]];
}});
var Attribute = function Attribute() {
"use strict";
};
($traceurRuntime.createClass)(Attribute, {}, {});
var SomeEl = function SomeEl() {
"use strict";
this.counter = 0;
};
($traceurRuntime.createClass)(SomeEl, {}, {});
Object.defineProperty(SomeEl, "annotations", {get: function() {
return [new Template('<div>xxx</div>')];
}});
(function main() {
console.log(SomeEl.annotations);
console.log(SomeEl.properties);
})();
而且我看不到 @Attribute
注释 counter
这里有几处错误,构造函数上的注释与 class 上的注释相同。
@Template('<div>xxx</div>')
class SomeEl{
@Attribute
constructor(){}
}
以上转化为:
Object.defineProperty(SomeEl, "annotations", {get: function() {
return [new Template('<div>xxx</div>'), new Attribute];
}});
请注意,构造函数上的注释与 class 上的注释相同。任何其他函数上的注释都会将注释放在该函数上,但构造函数和 class 本质上是相同的。
new Attribute
从未出现在注释中的原因可能是您的 counter: int
和分号 (;
)。您混淆了 AtScript 的另一个概念,即参数注释。这些是这样写的:
@Template('<div>xxx</div>')
class SomeEl{
constructor(counter: int){}
}
这转化为以下内容,我相信这就是您想要的:
var SomeEl = function SomeEl(counter) {};
($traceurRuntime.createClass)(SomeEl, {}, {});
Object.defineProperty(SomeEl, "annotations", {get: function() {
return [new Template('<div>xxx</div>')];
}});
Object.defineProperty(SomeEl, "parameters", {get: function() {
return [[int]];
}});
return {};