2016-03-29 7 views
0

私の角度フィルタの1つをコントローラの関数として使いたいです。私はここで答えを見つけました:How to use a filter in a controlerTypescriptとAngular Filters

実際、私は必要なものを正確に提供したので、最後の答えを使用しました。私のJSは次のようになります:

var MyFunc = $filter('MyGreatFilter'); 
    var resp = MyFunc(6); 

これはうまくいきます。しかし、私はTypescriptを使用しており、正しい型を与える方法を理解できません。私は、コントローラのインターフェイスにこのタイプを追加すると

error TS2349: Cannot evoke an expression whose type lacks a call signature 

:もちろん、私はエラーを取得する任意のタイプなし

error TS2322: Type {} is not assignable to type '(val: number) => string' 

MyFunc(val:number): string; 

私は理解していないエラーが発生しますこの関数は、数値をパラメータとして取り、文字列を返します。 フィルタ関数MyFuncを入力する方法に関するアイデアはありますか?

ありがとうございました。

+0

MyFuncと:機能あなたは、フィルタの上に活字体のインタフェースを追加する必要がありますか? – YOU

答えて

0

私は、他の人(私よりもはるかに賢い人)が書いたコードの別の部分で答えを見つけました。私は上記示したよりもわずかに異なる方法で関数を呼び出し、その後

interface IFilterMyGreatFilterName { 
(value: number): string; 
} 

function MyGreatFilter() { 
    return function (item:number) { 
     // Filter stuff and return a string 
    }; 
} 

そして:

var resp = $filter<IFilterMyGreatFilterName>('MyGreatFilter')(aNumValue);