以下代码
import {Attribute, Component, View} from 'angular2/angular2';
@Component({
selector: 'card'
})
@View({
templateUrl: "app/design/card/card.html",
styleUrls: ["app/design/card/card.css"],
directives: []
})
export class Card {
constructor(@Attribute('no-teaser') noTeaser) {
this.active=false
}
}
给我错误
Unable to resolve signature of parameter decorator when called as an expression. Supplied parameters do not match any signature of call target.
@Attribute('home')
将TypeScript翻译为JavaScript。
我使用Alpha 37,来自DefinitelyTyped的最新定义,以及我使用atom-typescript(使用最新的打字稿版本)
答案 0 :(得分:1)
作为表达式调用时,无法解析参数装饰器的签名。提供的参数与呼叫目标的任何签名都不匹配。
Google搜索此错误结果:https://github.com/Microsoft/TypeScript/issues/3661
你可以看到:
Decorating function formal parameters is currently not part of the ES7 proposal.
所以我怀疑最新的 TypeScript中不允许constructor(@Attribute('no-teaser') noTeaser)
ntypescript
a https://github.com/TypeStrong/ntypescript。如果是这种情况,请向Microsoft / TypeScript报告问题。
是否可以告诉atom-typescript使用哪个版本的tsc?
不容易,因为旧版本的TSC可能与最新的 API兼容 ...但是有这个选项:https://github.com/TypeStrong/atom-typescript/blob/master/docs/faq.md#can-i-use-a-custom-typescript-compiler
答案 1 :(得分:1)
这是如何在角度中定义属性注释的问题。在尝试创建自己的注释时,我遇到了同样的错误:
export function Attribute(name: string) {
return function(a, b) {
console.log(a);
console.log(b);
}
}
给出与你相同的错误,所以当我改为:
export function Attribute(name: string) {
return function(a, b, c) {
console.log(a);
console.log(b);
console.log(c);
}
}
错误消失了。看起来你需要向角项目提交问题。