2017-04-10 11 views
0

次のコードが与えられます。角度フィルタ:TypeScriptのコンストラクタによって返された関数の呼び出し

class ToLowerFilter 
{ 
    constructor() 
    { 
     return (value: string) => value.toLowerCase(); 
    } 
} 
myAngularApp.filter("toLower", ToLowerFilter); 

私は別のコンテキストでこれを使用したい場合は、通常、あなたが$filter参照を注入でき、ような何か:活字体のコンパイラはと言って、この文句を言うしかし

var filteredValue = $filter('toLower')(myValueToBeLowered); 

$filter(...)は呼び出し可能な型を返しません。

ToLowerFilterクラスを直接使用する場合は、どのようにタイプスクリプトを使用しますか?これらの方法はいずれも動作しません:(活字体がtranspileエラーが発生いずれか、またはそれが正しいJavaScriptのシンタックスではありません)

// define $filter: ng.IFilterService 
var filteredValue = $filter('toLower')(value);  

var filter = new ToLowerFilter(); 
var filteredValue = filter(value); 

var filteredValue = new ToLowerFilter(value); 

var filteredValue = new ToLowerFilter()(value); 
+0

ToLowerFilterに関数を返す関数を作ってみませんか? –

答えて

0

一つの可能​​な解決策は、(ただし、そうでないかもしれない最高の)最初の関数型に$filterをキャストすることで、

var filterFunction = $filter('toLowerFilter') as (value: string) => string; 
var filteredValue = filterFunction(myValue); 

これはきれいではなく、TypeScriptクラスを使用しませんが、少なくともエラーは発生しません。

私はこれを行う他の可能な方法を聞いてみたいと思います。

関連する問題