我可以在TypeScript函数签名中将两个“ any”标记为同一事物吗?

时间:2019-08-20 18:19:54

标签: typescript

考虑以下功能:

$('.element-item').each(function() {
  if( $(".element-item").css('background') = '#ccc') {
    // do something
  }
});

它的签名说:我接受function extractItemsFromArray(array: any[], isItemToBeRemoved: (item: any) => boolean) { let removedItems = []; let i = array.length; while(i--) if(isItemToBeRemoved(array[i])) removedItems.push(array.splice(i, 1)); return removedItems; } 个项目的数组和一个检查函数,该函数决定是否删除类型为any的项目。

但是,如果将具有签名any的函数作为(item: string) => boolean传递而将isItemToBeRemoved作为number[]传递(我假定这两个都声明为某些类型),则上面的函数定义不会告诉TS实际上不是好的。有没有办法将array的定义中的那两个any标记为相同类型的东西?

1 个答案:

答案 0 :(得分:1)

好吧,在写问题时,我在Google上搜索了一下,并决定阅读有关Advanced Types的更多信息。似乎类型别名实际上是我要寻找的:

extractItemsFromArray

用法似乎是:

function extractItemsFromArray<T>(array: T[], isItemToBeRemoved: (item: T) => boolean) {
  ...
}