ES3をターゲットにしているときに、メソッドデコレータが正しくサポートされていないか、まったくサポートされていないようです。残念なことに、あなたが得るエラーメッセージは非常に有用ではありません。エラーメッセージについてのように見えます。また、ES3や完全サポートをターゲットにしているときに、デコレータの部分的なサポートを意図しているかどうかはわかりません。例えば
、あなたはES3をターゲットにする方法デコレータを使用しようとします
エラーTS1241:メソッドデコレータ際の署名を解決することができません
function myMethodDecorator(target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<any>): TypedPropertyDescriptor<any> {
// do something
return descriptor;
};
class MyClass {
@myMethodDecorator
myMethod(arg: string) {
return "Message -- " + arg;
}
}
あなたが報告されたエラーメッセージが表示されます式と呼ばれる。 指定されたパラメータは、コールターゲットのシグネチャと一致しません。
しかし、プロパティデスクリプタを適用しようとすると、それをメソッドに適用しているにもかかわらず、コンパイラはそれに不思議なことに間違いなく問題ありません。これは、エラーなしES3をターゲットにコンパイルします。
function myPropertyDecorator(target: Object, propertyKey: string): void {
// something
};
class MyClass {
@myPropertyDecorator
myMethod(arg: string) {
return "Message -- " + arg;
}
}
しかし、あなたがでメソッドのデコレータを使用しているとき、それはES3へのコンパイルに取得することができます。
let myMethodDecorator: any = function(target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<any>): TypedPropertyDescriptor<any> {
// do something
return descriptor;
};
class MyClass {
@myMethodDecorator
myMethod(arg: string) {
return "Message -- " + arg;
}
}
あなたがコードを提供することができますか?あなたは 'tsc script.ts -t ES3'を試しましたか? –
もちろん、私はes3ターゲットでtsconfigとgulp typescriptを使用しています。問題を示すクラウド版へのリンクを追加しました。 – Grofit