从单个键控接口定义键值对类型

时间:2018-03-01 06:58:18

标签: typescript

给定具有单个键和值的接口:

interface A {
    B : string
}

我希望能够定义键值类型:

interface C {
   "key"   : B,
   "value" : string
}

但我不想手动执行此操作,我希望能够编写通用类型/接口来执行此操作,并基于单个类型参数执行此操作。

EG

interface KeyValueify<T> {
   ...
}

以上C相当于KeyValueify<A>

...中有什么神奇之处可以让它发挥作用?

这是我到目前为止的尝试:

interface KeyValueify<T> {
    key : (keyof T)[0],
    value : T[(keyof T)[0]]
}

然而,它抱怨无法使用字符串来索引T.

当我尝试解决这个问题时,它似乎只是使用任何类型的值:

interface kv2<T extends {[key :string] : T[(keyof T)[0]]}> {
    key :   keyof T,
    value : T[(keyof T)[0]]
}

赞赏任何想法或变通方法。

1 个答案:

答案 0 :(得分:1)

删除[0]

interface KeyValueify<T> {
    key: keyof T,
    value: T[keyof T]
}