我遇到的问题是使用Array<T>.filter
和接口定义之间的差异。
我在 Angular2 组件中实现了这个过滤器:
performFilter(filterBy: string): IProduct[] {
filterBy = filterBy.toLocaleLowerCase();
return this.products.filter((p: IProduct) =>
p.productName.toLocaleLowerCase().indexOf(filterBy) !== -1);
}
奇怪的是当我进入接口定义时:
我在用着
Array<T>.filter(callbackfn: (value: T, index: number, array: T[]) => any,
thisArg?: any): T[];
我提供的回调函数其实是:
callbackfn: (value: T) => boolean
但是界面显示了 2 个其他参数 - 索引和数组作为非可选参数。然而,这一切都可以编译和工作。我认为可选参数意味着
callbackfn: (value: T, index?: number, array?: T[]).
就未记录行为的打字稿编译器而言,是否还有其他事情发生?