2016-10-12 7 views
4

MEANスタックとTypescriptを使って小さなプロジェクトを試しています。 Typescriptは、emit()Array.sum()メソッドの入力を受け付けません。Node.js/Mongoose/MongoDb Typescript MapReduce - emit()とArray.sum()メソッド

ここでは以下の私のコードだ...

let options: mongoose.ModelMapReduceOption<IInvoice, any, any> = { 
    map:() => { 
     emit(this.customer, this.total); 
    }, 
    reduce: (key, values) => { 
     return Array.sum(values); 
    }, 
    out: { replace: "map_reduce_customers" }, 
    verbose: true 
}; 

私は、NPMのタイピングパッケージを使用しています、とMongoDBのだけでなく、私のプロジェクトでマングースパッケージのタイピングがインストールされています。この2つの方法で赤い塊がありますが、実行するとアプリケーションは正常に動作します。

はい、正しく有効なJavaScriptに変換されます。 Typescriptがこれらの2つのメソッドを拾うのに欠けている型定義があるかどうかを知りたいのですが?

答えて

-1

タイピング定義があるかどうか知りたいのですが、 Typescriptはこれらの2つの方法でピックアップしますか?

はい、あります。スクリプト参照を追加する必要があります。 (ちょうどあなたのプロジェクト内の正しいパスにそれを修正)ファイルの先頭に次の行を追加します。

///<reference path="../typings/modules/mongodb/index.d.ts" /> 
///<reference path="../typings/modules/mongoose/index.d.ts" /> 
1

あなたはこの

declare function emit(k, v); 

ようEMIT関数を宣言して、非矢印を使用することができます機能(「本」のマップ関数の内部を使用することができるようにする)

map: function map() { 
    emit(this.customer, this.total); 
} 

Array.sumは、私の知る限りではJSには存在しません。ライブラリによって提供されている場合は、そのライブラリの型をインストールすることができます。

関連する問題