打字稿和角度滤镜

时间:2016-03-29 09:10:11

标签: javascript angularjs typescript

我想在我的控制器中使用我的一个角度滤镜作为函数。我在这里找到了答案:How to use a filter in a controler

事实上我使用了最后一个答案,因为它提供了我所需要的。我的JS看起来像这样:

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

它工作正常。但是,我使用的是Typescript,我无法弄清楚如何给它正确的类型。显然没有任何类型我得到错误:

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

当我将此类型添加到控制器的界面时:

MyFunc(val:number): string;

我收到错误,我不明白:

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

该函数将一个数字作为参数并返回一个字符串。 关于如何键入过滤器函数MyFunc的任何想法?

感谢。

1 个答案:

答案 0 :(得分:1)

我在代码的另一部分找到了答案,我正在研究其他人(比我聪明得多)写道。您需要在过滤器上方添加一个Typescript接口:

ArrayBlockingQueue

然后以与上面显示的略有不同的方式调用该函数:

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

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