這裏使用新的ECMAScript裝飾是我的代碼示例:不能在打字稿2.4.2
function enumerable(value: boolean) {
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
descriptor.enumerable = value;
};
}
class A {
@enumerable(false)
a: number = 1
b: number = 2
myMethod() {}
}
const a = new A()
無論我嘗試,我得到:
D:(real path removed)/first-try-typescript>tsc --emitDecoratorMetadata --experimentalDecorators decorators.ts
decorators.ts(8,3): error TS1240: Unable to resolve signature of property decorator when called as an expression.
我已經嘗試了從同一stackoferflow問題的建議:
- 加入emitDecoratorMetadata & experimentalDecorators到tsconfig
- 運行TSC --emitDecoratorMetadata --experimentalDecorators
- 加入
:any
標記裝飾函數返回值 - 加入
descriptor: TypedPropertyDescriptor<any>
型
我總是得到這個錯誤。在終端和Webstorm代碼提示中。方法裝飾器 - 同樣的事情(見下面的例子)。
function test(target: Object,
propertyKey: string,
descriptor: TypedPropertyDescriptor<any>): any {
return descriptor;
}
class A {
a: number = 1
b: number = 2
@test
myMethod() {}
}
const a = new A()
到目前爲止代碼是在這裏 - https://github.com/rantiev/first-try-typescript
什麼是你想要的結果?裝飾器應該應用於函數/方法,你正在試圖做似乎是混合的方法爲一類 –
@NickTomlin - 這是不正確,裝飾器可以應用到一個屬性爲好。 –
@JohnWeisz啊有趣,我的壞話呢! –