2016-06-16 14 views
2

ES6で関数をエクスポートしようとしているので、他のファイルでDRYコードを使用することができます。JavaScript ES6 - エラー:クラスをエクスポートするときにのみデコレータをエクスポートできます

You can only use decorators on an export when exporting a class (16:0) while parsing file:

@idempotent 
export function totalItems() { 
    this.cart.items.forEach((dish) => total += item.qty); 
    return total; 
} 

任意のアイデア:

は、しかし、私は次のエラーを受け取りますか?

+0

あなたはバベルを使用していますか?その場合は、適切なタグを指定して追加してください。 –

+0

Ionic2を使用すると、Babelはコードに準拠するだけで問題ありません。 –

+0

このエラーはコンパイラからのものではありませんか? Babelのソースコードで定義されているようです。この上の行はデコレータを定義していますが、これに含める必要がありますか? [最小で完全で検証可能な例](http://stackoverflow.com/help/mcve)を提供すると、助けが簡単になります。将来はそうしてください。 –

答えて

1

あなたが関数をエクスポートしたい場合、あなたはこのような特定のクラスに追加する必要があります。

export class GeneralFunctions 
{ 
    totalItems() { 
     this.cart.items.forEach((dish) => total += item.qty); 
     return total; 
    } 
} 

そして、あなたは、単にそのクラスをインポートし、そのオブジェクトを作成し、その関数を呼び出し、その関数を使用したい場所にこのようなオブジェクトを:このことができます

import {GeneralFunctions} from "./<your-file>"; 

var obj : GeneralFunctions 
obj.totalItems(); 

希望:)

5

何をしようとしていることはサポートされていません。 decorator proposal(まだ標準化されていない)は、関数定義ではなく、クラス定義とそのメソッドの@Decoratorのみを含んでいます。あなたが代わりにこのように使用するための関数デコレータ/ラッパー関数を作成することも

export const totalItems = idempotent(function() { 
    let total; 
    this.cart.items.forEach((dish) => total += item.qty); 
    return total; 
}); 
関連する問題