考虑以下功能:
$('.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
标记为相同类型的东西?
答案 0 :(得分:1)
好吧,在写问题时,我在Google上搜索了一下,并决定阅读有关Advanced Types的更多信息。似乎类型别名实际上是我要寻找的:
extractItemsFromArray
用法似乎是:
function extractItemsFromArray<T>(array: T[], isItemToBeRemoved: (item: T) => boolean) {
...
}