我正在尝试将实现从here移植到typescript 这有效,但我喜欢将其作为通用fn以及lodash _.indexOf implementation中的其他fn。
indexOf<T>(
array: Array<T>,
value: T): number;
/**
* @see _.indexOf
**/
indexOf<T>(
array: List<T>,
value: T): number;
etc...
我现在就这样使用它
var idx = _.indexOf(myList, (r:Type) => {
return r.Name == k;
});
我正在寻找一种方法来使用以下实现,如
var idx = _.indexOf<Type>(myList, (r) => {
return r.Name == k;
});
无类型实施:
var indexOfValue = _.indexOf;
// using .mixin allows both wrapped and unwrapped calls:
// _(array).indexOf(...) and _.indexOf(array, ...)
_.mixin({
// return the index of the first array element passing a test
indexOf: (array:_.List<any>, test:Function):any => {
// delegate to standard indexOf if the test isn't a function
if (!_.isFunction(test)) return indexOfValue(array, test);
// otherwise, look for the index
for (var x = 0; x < array.length; x++) {
if (test(array[x])) return x;
}
// not found, return fail value
return -1;
}
});
答案 0 :(得分:0)
这是我写的一段时间:
export function indexOf<T>(items: T[], filter: (item: T) => boolean): number {
for (var i = 0; i < items.length; i++) {
if (filter(items[i])) {
return i;
}
}
}