给出以下代码,例如角度过滤器:
class ToLowerFilter
{
constructor()
{
return (value: string) => value.toLowerCase();
}
}
myAngularApp.filter("toLower", ToLowerFilter);
如果我想在另一个上下文中使用它,通常可以注入$filter
引用并执行以下操作:
var filteredValue = $filter('toLower')(myValueToBeLowered);
然而,TypeScript编译器抱怨这一点,说$filter(...)
没有返回可调用的类型。
如果我想直接使用ToLowerFilter
类,我将如何使用TypeScript?这些方法都不起作用:(TypeScript要么生成转换错误,要么它不是正确的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 :(得分:0)
一种可能的解决方案(尽管可能不是最好的)是首先将$filter
强制转换为函数类型,然后调用它:
var filterFunction = $filter('toLowerFilter') as (value: string) => string;
var filteredValue = filterFunction(myValue);
它不漂亮,并且它不使用TypeScript类,但至少它不会产生错误。
我很想听听其他可行的方法。