比例未知的自定义类型

时间:2019-02-18 12:29:56

标签: typescript

这是我要正确键入的对象:

{
 data : {
  "unknownProperty1" : "foo",
  "unknownProperty2" : 4,
  ...otherProperties
 },
 labelKey :"unknownProperty2",
 valueKey : "unknownProperty1",
}

嵌套对象“数据”至少具有两个具有未知键的属性,但一个属性是数字类型,另一个属性是字符串类型

此外,属性labelKey必须是字符串类型的未知数据键;属性valueKey必须是数字类型的未知数据键;

我想出了以下解决方案:

type IData<T> = {
 [key:string]: T
}


interface MyInterface<
  T extends IData<number>,
  K extends IData<string>
> {
 data : (T & K)[],
 labelKey : keyof T,
 valueKey : keyof K,
}

但是它不能按预期工作,仅对于字符串类型的“ labelKey”,我不知道为什么

function myFunc<
  T extends IData<number>,
  K extends IData<string>
>(obj: MyInterface<T, K>){

 const values = obj.map((d: T) => d[valueKey]) // correct d[valueKey] exists and is type number
 const labels = obj.map((d: K) => d[labelKey]) // Fail, d[labelKey] is undefined
}

0 个答案:

没有答案