函数签名中通用类型的类型

时间:2019-07-12 09:13:02

标签: typescript

我正在尝试编写一个通用函数,其中我想要一个具有其他通用参数类型的参数。这是一个代码示例:

function find<K,V,P extends keyof V>(map: Map<K,V>, property: P, value: number): boolean {
  for (const entry of Array.from(map.values())) {
    if (entry[property] == value)
      return true;
  }
  return false;
}

let map = new Map<string, string>([["a", "test"]]);
const result: boolean = find<string,string,'length'>(map, 'length', 4); //is the entry 'a' of length 4 ?

这是行不通的,因为value: number的类型是硬编码的。我想成为property:P类型中的V类型。这有可能吗?

1 个答案:

答案 0 :(得分:0)

使用mapped types

function find<K,V,P extends keyof V>(map: Map<K,V>, property: P, value: V[P])